Negli esempi della lezione precedente abbiamo visto che è possibile richiamare i valori delle proprietà "a" e "b" della classe MyClass attraverso le istanze della stessa, e dunque, dall'esterno della classe. Ma se invece volessimo richiamare questi valori dall'interno della classe, tramite una funzione membro?
A questo proposito ci serve una nuova keyword
che ci permetta di identificare le istanze dall'interno della classe. La keyword è $this
e si riferisce sempre all'istanza corrente che stiamo utilizzando. Ecco un semplice esempio, in cui viene modificata la classe della lezione precedente:
class MyClass {
// variabili membro
public $a = 10;
public $b = 20;
// funzioni
public function sayHello() {
echo "Hello! " . $this->a . " " . $this->b;
}
}
$myClass_1 = new MyClass();
$myClass_2 = new MyClass();
// ora la proprietà "a" dell'oggetto $myClass_2 è impostata a 20
$myClass_2->a = 20;
// stampa "Hello! 10 20"
$myClass_1->sayHello();
// stampa "Hello! 20 20"
$myClass_2->sayHello();
Come è possibile notare, $this
ricopre il ruolo dell'istanza della classe corrente. Questo è un concetto di fondamentale importanza, che ci permette di accedere alle varie componenti (pubbliche) della classe direttamente dal suo interno.
Classi vs istanze
Possiamo ora astrarre il concetto affermando che una classe è una sorta di "garage" o di "officina" centrale dove vengono prodotte un numero variabile di istanze, che sono i mezzi finali con cui è possibile utilizzare le funzionalità della classe.
classe A / istanza 1 istanza 2 istanza 3 classe B / istanza 1 istanza 2 classe C / ...
Conclusione
In questa e nella lezione precedente abbiamo imparato tre concetti fondamentali della programmazione ad oggetti, senza i quali sarebbe impossibile proseguire lo studio dei componenti più avanzati:
- concetto di classe
- concetto di istanza
- keyword $this
Nella prossima lezione analizzeremo nel dettaglio le due componenti principali di una classe: le proprietà (variabili) ed i metodi (funzioni).