Come abbiamo visto nella lezione precedente, tramite il modello orientato agli oggetti è possibile centralizzare più funzionalità all'interno di un'unica postazione. Questa postazione prende il nome di classe. Una classe è una sorta di "involucro" che racchiude variabili e funzioni che condividono funzionalità e risorse, che rimangono in attesa di essere utilizzate tramite le istanze della classe stessa. In PHP una classe è dichiarata tramite la keyword class
seguita dal nome della classe e dall'implementazione della stessa racchiusa tra parentesi graffe:
class MyClass {
// implementazione della classe MyClass...
}
Una volta dichiarata la classe, possiamo passare all'inserimento delle funzionalità, tramite la dichiarazione di variabili e funzioni. Nello snippet successivo verrà utilizzata la parola chiave public che precede le varie componenti della classe: per ora basta sapere che questa keyword è necessaria ai fini della corretta compilazione dello script, proprio come nel caso di
class
o function
.class MyClass {
// variabili membro
public $a = 10;
public $b = 20;
// funzioni
public function sayHello() {
echo "Hello!";
}
}
Ora che abbiamo creato le funzionalità della nostra classe, ci occorre un modo per richiamarle: questo diventa possibile tramite le istanze della classe (o oggetti). Per dichiarare un'istanza si usa l'operatore new
seguito dal nome della classe ed opzionalmente da una lista di parametri richiesti dalla funzione costruttore (che studieremo tra qualche lezione). Nel nostro caso non abbiamo il costruttore, dunque la creazione di un'istanza avviene nel seguente modo:
$myClass_1 = new MyClass();
// stampa "Hello!"
$myClass_1->sayHello();
// stampa 10
echo $myClass_1->a;
Ovviamente, per ogni classe può essere istanziato un numero illimitato di oggetti, ognuno con i propri parametri impostati al valore definito dalla classe nella sua dichiarazione iniziale:
$myClass_2 = new MyClass();
// ora la proprietà "a" dell'oggetto $myClass_2 è impostata a 20
$myClass_2->a = 20;
// stampa 10
echo $myClass_1->a;