OBJECT ORIENTED PROGRAMMING IN PHP

php logoIl primo step per comprendere la OOP è capire le classi e gli oggetti. Una classe è un template di codice utilizzata per creare uno o più oggetti. Immaginiamo il prototipo di una vettura, così come dal prototipo (classe) vengono create le vetture (oggetti), così nella OOP dalle classi vengono creati oggetti che possono essere, il più delle volte lo sono, distinti tra loro. Una classe viene definita dalla keyword class, può contenere lettere e numeri ma non può iniziare con un numero. La notazione per i nomi delle classe è pascal-case (Come camel-case solo che anche la prima lettera è maiuscola.)

GLI OGGETTI

Un oggetto rappresenta dati che sono stati strutturati in base alla classe. Si dice che un oggetto è un’istanza della sua classe. Come da un prototipo di veicolo vengono generati oggetti (automobili) così dalle classi vengono generati oggetti. Ogni oggetto è a sé stante ad esempio una macchina la possiamo personalizzare, cerchi, colore etc. Così le variabili $corsoPHP e $corsoJS sono due oggetti a sé stanti creati dal medesimo template cioè la classe corso ma comunque differenti l’uno dall’altro.

PROPRIETA’ E METODI

Una proprietà non è altro che una variabile inserita all’interno della classe, mentre un metodo è una funzione inserita all’interno della classe. Una proprietà deve essere dichiarata con il suo ambito di visibilità che può essere, public, private, protected. Le prorietà dichiarate come public sono accessibili sia all’interno che all’esterno della classe, mentre con private o protected sono accessibili solo internamente alle classi.

Copy to Clipboard

METODI

I metodi permettono agli oggetti di eseguire dei compiti. Sono funzioni speciali dichiarati all’interno della classe; come per le funzioni possiamo fare type hinting. $this rappresenta il riferimento all’oggetto creato dalla classe.

Copy to Clipboard

IL METODO COSTRUTTORE

Ci sono due tipologie di metodo: metodi esplicitamente invocati e metodi che vengono eseguiti da PHP in certi momenti. I metodi eseguiti automaticamente vengono chiamati metodi magici. Il primo metodo magico che andiamo ad analizzare è  __construct (costruttore). Grazie al costruttore possiamo inizializzare un oggetto con certi valori. Tale metodo viene automaticamente invocato da PHP in fase di creazione dell’oggetto (quando utilizziamo l’operatore new).

Copy to Clipboard

CONSTRUCTOR PROPERTY PROMOTION

PHP 8 migliora ulteriormente la leggibilità del codice. Invece di dichiarare proprietà pubbliche e assegnarle nel costruttore possiamo usare una sintassi abbreviata (vedi codice in basso).

Copy to Clipboard

APPROFONDIMENTO

La programmazione orientata agli oggetti (OOP) in PHP è un paradigma di programmazione che utilizza oggetti e classi per organizzare il codice in modo più strutturato e modulare. L’OOP permette di creare componenti riutilizzabili e di gestire complessità crescenti nei progetti di sviluppo software. Di seguito una descrizione approfondita dei concetti chiave dell’OOP in PHP.

1. Classi e Oggetti

Classe: Una classe è un modello o blueprint che definisce le proprietà (variabili) e i metodi (funzioni) che un oggetto creato da essa avrà. In PHP, una classe si definisce usando la parola chiave class, seguita dal nome della classe e dalle parentesi graffe che racchiudono le proprietà e i metodi.

class Automobile {
      public $marca;
      public $modello;

      public function avviaMotore() {
         echoIl motore è avviato.“;
      }
}

Oggetto: Un oggetto è un’istanza di una classe. Una volta definita una classe, è possibile creare oggetti utilizzando la parola chiave new.

$miaAuto = new Automobile();
$miaAuto->marca = “Fiat“;
$miaAuto->modello = “500“;
$miaAuto->avviaMotore(); // Output: Il motore è avviato.

2. Proprietà e Metodi

Proprietà: Le proprietà sono variabili definite all’interno di una classe. Ogni oggetto ha il proprio set di valori per queste proprietà.

class Persona {
public $nome;
public $cognome;
}

Metodi: I metodi sono funzioni definite all’interno di una classe. Questi metodi possono operare sulle proprietà dell’oggetto o eseguire altre azioni.

class Persona {
       public $nome;
       public $cognome;

       public function nomeCompleto() {
          return $this->nome . ” ” . $this->cognome;
       }
}

Nell’esempio sopra, $this è una parola chiave speciale che si riferisce all’istanza corrente della classe.

3. Visibilità: Public, Private e Protected

La visibilità definisce l’accessibilità delle proprietà e dei metodi di una classe:

Public: Le proprietà e i metodi dichiarati come public sono accessibili da qualsiasi parte del programma.

class Prodotto {
public $prezzo;
}

Private: Le proprietà e i metodi dichiarati come private sono accessibili solo all’interno della classe in cui sono definiti.

class ContoBancario {
      private $saldo;

      public function deposita($importo) {
        $this->saldo += $importo;
      }
}

Protected: Le proprietà e i metodi dichiarati come protected sono accessibili solo all’interno della classe in cui sono definiti e dalle classi derivate (sottoclassi).

class ContoBancario {
protected $saldo;
}

4. Costruttori e Distruttori

Costruttore: Un costruttore è un metodo speciale che viene chiamato automaticamente quando viene creata una nuova istanza di una classe. Viene utilizzato per inizializzare le proprietà dell’oggetto.

class Automobile {
       public $marca;
       public $modello;

       public function __construct($marca, $modello) {
          $this->marca = $marca;
          $this->modello = $modello;
       }
}

$auto = new Automobile(“Fiat“, “500“);

Distruttore: Un distruttore è un metodo speciale che viene chiamato automaticamente quando un oggetto viene distrutto. Viene utilizzato per eseguire operazioni di pulizia, come chiudere connessioni o rilasciare risorse.

class Automobile {
public function __destruct() {
echoL’oggetto Automobile è stato distrutto.“;
}
}

5. Ereditarietà

L’ereditarietà è un meccanismo che permette a una classe (sottoclasse) di ereditare proprietà e metodi da un’altra classe (superclasse). In PHP, una classe eredita da un’altra utilizzando la parola chiave extends.

class Veicolo {
     public $tipo;

     public function avvia() {
         echoIl veicolo è avviato.“;
     }
}

class Automobile extends Veicolo {
     public $marca;
     public $modello;
}

$auto = new Automobile();
$auto->avvia(); // Output: Il veicolo è avviato.

6. Interfacce

Le interfacce in PHP definiscono un contratto che le classi devono rispettare. Un’interfaccia specifica i metodi che devono essere implementati da qualsiasi classe che “implementa” l’interfaccia.

interface Veicolo {
      public function avvia();
}

class Automobile implements Veicolo {
      public function avvia() {
          echoL’automobile è avviata.“;
      }
}

7. Trait

I trait sono un meccanismo che permette di riutilizzare il codice all’interno di diverse classi. Un trait è simile a una classe, ma è pensato per raggruppare metodi riutilizzabili.

trait Saluto {
       public function saluta() {
          echoCiao!“;
       }
}

class Persona {
       use Saluto;
}

$p = new Persona();
$p->saluta(); // Output: Ciao!

Conclusione

L’OOP in PHP offre un insieme potente e flessibile di strumenti per costruire applicazioni modulari, scalabili e manutenibili. Comprendere e applicare correttamente i principi di OOP è fondamentale per qualsiasi sviluppatore PHP che desideri creare software robusto e di alta qualità.

LINK AI POST PRECEDENTI

IL LINGUAGGIO PHP

LINK AL CODICE SU GITHUB

GITHUB