Una classe è una collezione di variabili e funzioni che ne fanno uso. Una classe viene definita utilizzando la seguente sintassi:
<?php class Carrello { var $articoli; // Articoli nel carrello della spesa // Aggiungi $num articoli di $artnr al carrello function aggiungi_articoli ($artnr, $num) { $this->articoli[$artnr] += $num; } // Elimina $num articoli di $artnr dal carrello function rimuovi_articoli ($artnr, $num) { if ($this->articoli[$artnr] > $num) { $this->articoli[$artnr] -= $num; return true; } else { return false; } } } ?> |
Ciò definisce una classe chiamata Carrello che consiste in un vettore associativo di articoli e di due funzioni per aggiungere e rimuovere gli articoli nel carrello stesso.
Le classi sono tipi, ovvero, sono schemi per variabili. Per utilizzarle occorre crearne una variabile istanza del tipo (classe) desiderato tramite l'operatore new.
Questo codice crea un oggetto $carrello della classe Carrello. La funzione aggiungi_articoli() di questo oggetto è eseguita per aggiungere un articolo "10" al carrello.
Le classi possono essere estensioni di altre classi. La classe estesa o derivata possiede tutte le variabili e le funzioni della classe base oltre alle variabili e funzioni definite nell'estensione. Si ottiene ciò utilizzando la parola chiave extends. L'ereditarietà multipla non è supportata.
class Carrello_Personale extends Carrello { var $proprietario; function imposta_proprietario ($nome) { $this->proprietario = $nome; } } |
Questo codice definisce una classe Carrello_Personale che possiede tutte le variabili e funzioni della Carrello più la variabile proprietario e la funzione imposta_proprietario(). Creando una variabile istanza della classe Carrello_Personale è possibile impostare ed ottenere il nome del proprietario. È comunque possibile utilizzare le funzioni della classe Carrello nella classe Carrello_Personale:
$ncarrello = new Carrello_Personale; // Creiamo un carrello personale $ncarrello->imposta_proprietario ("kris"); // Imposta il nome del proprietario print $ncarrello->proprietario; // stampa il nome del proprietario del carrello $ncarrello->aggiungi_articoli ("10", 1); // (funzionalità eredità dalla classe Carrello) |
All'interno delle funzioni di una classe, la variabile $this significa questo oggetto. Per accedere ad una variabile o funzione chiamata prova, dall'interno dell'oggetto corrente bisogna utilizzare $this->prova.
I costruttori sono funzioni in una classe che sono eseguite automaticamente quando viene creata una nuova istanza della classe stessa. Una funzione diventa un costruttore quando è definita con lo stesso nome della classe.
class Auto_Carrello extends Carrello { function Auto_Carrello () { $this->aggiungi_articoli ("10", 1); } } |
Questo codice definisce una classe Auto_Carrello la quale è un Carrello più un costruttore il quale inizializza il carrello con un articolo numero "10" ogni volta che una nuova variabile istanza della Auto_Carrello è creata con "new". I costruttori possono anche avere argomenti, questi argomenti possono essere opzionali, caratteristica che li rende molto utili.
class Costruttori_Carrello extends Carrello { function Costruttori_Carrello ($articoli = "10", $num = 1) { $this->aggiungi_articoli ($articoli, $num); } } // Acquista le stesse vecchie cose. $carrello_standard = new Costruttori_Carrello; // Acquista realmente... $carrello_differente = new Costruttori_Carrello ("20", 17); |
Cautela |
Per le classi derivate, il costruttore della classe genitore non è eseguito automaticamente durante l'esecuzione del costruttore. |