Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 4 di 50
  • livello avanzato
Indice lezioni

Classi, costruttori e distruttori

Impariamo a creare una classe con PHP e la OOP, scopriamo come definirla e utilizzarla analizzando nel dettaglio il ruolo svolto da componenti come il costruttore, il distruttore e la variabile $this, analizziamo la fase fondamentale dell'istanza.
Impariamo a creare una classe con PHP e la OOP, scopriamo come definirla e utilizzarla analizzando nel dettaglio il ruolo svolto da componenti come il costruttore, il distruttore e la variabile $this, analizziamo la fase fondamentale dell'istanza.
Link copiato negli appunti

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 "struttura" con al suo interno proprietà e metodi che condividono funzionalità e risorse, che rimangono in attesa di essere utilizzate tramite le istanze della classe stessa.

Creazione di una classe

La creazione di una classe, come in altri linguaggi di programmazione, viene definita tramite la keyword class seguita dal nome della classe.

<?php
	class Person {
		...// dichiarazione delle proprietà
		...// dichiarazione costruttore e distruttore
		...// dichiarazione e definizione dei metodi
	}
?>

Una volta dichiarata la classe, possiamo passare all'inserimento delle funzionalità, tramite la dichiarazione di proprietà e metodi.

<?php
	class Person {
		//proprietà
		private $name = "";
		//costruttore
		public function __construct($name)
		{
			//inizializzazione della proprietà $name
			$this->name = $name;
		}	
		//metodi
		public function getName() {
			//$this rappresenta l'oggetto che sarà costruito a runtime
			return $this->name;
		}		
	}
	//istanzia un nuovo oggetto della classe Person
	$customer1 = new person("Giuseppe Rossi");
	echo "Cliente: ".$customer1->getName()."<br>";
	//istanzia un nuovo oggetto della classe Person
	$customer2 = new person("Guglielmo Cancelli");
	echo "Cliente: ".$customer2->getName()."<br>";
?>

Osservando la classe proposta, possiamo notare l'unica proprietà name con la parola chiave private. Della parola chiave private e degli altri indicatori di visibilità parleremo in dettaglio nei prossimi capitoli. Per il momento ci basterà sapere che la proprietà name può essere utilizzata solo dai metodi interni alla classe e quindi non è visibile all'esterno della classe. Infatti, per accedere al contenuto di questa proprietà è stato creato un metodo ad hoc getName().

Variabile $this

Per istanziare gli attributi/proprietà della classe, e in generale per accedere ad essi, si usa la sintassi:

$this->name;

dove $this rappresenta l'oggetto costruito a runtime e quindi avrà dei valori all'interno della proprietà. La stessa sintassi, inoltre, si utilizza per richiamare un metodo della classe su un oggetto.

Infatti, l'obiettivo del metodo getName(), è restituire una copia del valore contenuto nella proprietà $name, utilizzando l'istanza dell'oggetto rappresentata all'interno della classe da $this e recuperando il valore della proprietà attraverso il simbolo ->.

Costruttore

Nella classe Person abbiamo definito il metodo (o metodo magico) __construct, che è il costruttore della classe.

public function __construct($name)
	{
		//inizializzazione della proprietà $name
		$this->name = $name;
	}

Disponibile dalla versione PHP 5, questo metodo magico a differenza del PHP4 e di altri linguaggi di programmazione, non ha lo stesso nome della classe. Se in PHP5, una classe non dovesse avere questo metodo, si potrà utilizzare il vecchio stile di programmazione e verrà quindi creato un metodo con lo stesso nome della classe.

I diversi "metodi magici" nella OOP di PHP, attivati al verificarsi di determinati eventi e contrassegnati dal doppio underscore __ iniziale, verranno analizzati dettagliatamente nei successivi capitoli.

Il costruttore, come ogni altro metodo, può contenere parametri. Nel nostro caso, infatti, il parametro che viene passato al costruttore viene utilizzato per inizializzare la proprietà $name, grazie all'istanza a runtime dell'oggetto, cioè $this.

Distruttore

Con PHP 5 è stato introdotto anche il concetto del distruttore (__destruct()). Questo metodo, già presente in altri linguaggi OOP, viene chiamato automaticamente dal motore di PHP prima che l'oggetto sia distrutto. Risulta molto utile, ad esempio, per chiudere gli handle dei files, le connessioni al database o altre operazioni da eseguire prima che l'oggetto venga distrutto. Nel caso del nostro esempio il distruttore non fa nulla, e quindi potremmo anche non definirlo.

Istanza della classe

Una volta visti i principali elementi che compongono una classe, possiamo vedere come questa può essere utilizzata. Nel nostro esempio, non solo abbiamo definito una classe, ma anche creato un'istanza utilizzando la seguente sintassi:

//creazione oggetto $costumer1 istanza della classe Person
	$customer1 = new person("Giuseppe Rossi");

La parola chiave new restituisce un riferimento all'oggetto creato. Ora, utilizzando l'oggetto $costumer1 possiamo accedere a qualsiasi proprietà o metodo utilizzando la sintassi vista in precedenza: $customer1->getName();

Conclusioni

Lo scopo di questa parte della guida è quello di mostrare un primo approccio alla programmazione ad oggetti in PHP fornendo un semplice esempio. Nel prossimo capitolo, ci soffermeremo sugli indicatori di visibilità: public, protected e private per proprietà e metodi.

Ti consigliamo anche