Come abbiamo visto in precedenza, 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 variabili e funzioni che condividono funzionalità e risorse, che rimangono in attesa di essere utilizzate tramite le istanze della classe stessa.
Classi, oggetti, proprietà, metodi
Prima di addentrarci nell'argomento è necessaria una conoscenza di base delle differenze tra gli oggetti, le classi, le proprietà e i metodi.
Definizione base dell'OOP:
Elemento | Descrizione |
---|---|
Proprietà | Variabili di una classe. Funzionano esattamente come le variabili regolari, tranne per il fatto che sono legate all'oggetto. |
Metodi | Funzioni specifiche di una classe. Le azioni che un oggetto sarà in grado di eseguire. |
Oggetto | Un oggetto è un'istanza di una classe. |
Definiamo quindi la nostra prima classe
<?php
class Person {
// proprietà
public $name = "";
//costruttore
public function __construct($name)
{
//inizializzare della variabile $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");
//istanzia un nuovo oggetto della classe Person
$customer2 = new person("Guglielmo Cancelli");
echo "Cliente: ".$customer1->getName()."<br>";
echo "Cliente: ".$customer2->getName()."<br>";
}
?>
Nell'esempio abbiamo creato la classe Person
, utilizzando la parola chiave class
, seguita dal nome della classe e una serie di parentesi graffe {}.
Proprietà
Per aggiungere proprietà (variabili) alla classe, utilizzeremo il seguente codice:
public $name;
Nell'esempio abbiamo creato un unico attributo: $name
. La keyword public
, di cui parleremo nei prossimi capitoli, determina invece il livello di visibilità delle proprietà.
I metodi
Una volta create le proprietà possiamo definire il nostro metodo getName
per accedere al contenuto della proprietà $name
:
public function getName() {
//$this rappresenta l'oggetto che sarà costruito a runtime
return $this->name;
}
Per accedere agli attributi dell'oggetto la sintassi da utilizzare è la seguente:
return $this->name;
L'oggetto
La classe è una dichiarazione di metodi e proprietà che lavorano su di essa e per questo motivo non può essere usata direttamente. Per poterla utilizzare bisogna invece istanziare un oggetto.
Per creare una nuova istanza, basterà scrivere:
$customer1 = new person("Giuseppe Rossi");
$customer2 = new person("Guglielmo Cancelli");
La chiave new
, crea una nuova istanza di person
e la assegna a $customer
. In questo metodo, tutti i valori dati dai parametri sono configurati esattamente per questa istanza; tali valori sono inoltre unici per ogni istanza. La stessa sintassi, utilizzata per istanziare gli attributi dell'oggetto, viene usata anche per richiamare un metodo della classe su un oggetto; quindi, per richiamare getName()
sull'oggetto $customer1
della classe person
, utilizziamo:
$customer1->getName();
Il codice produrrà il seguente output:
Cliente: Giuseppe Rossi
Cliente: Guglielmo Cancelli
Nota: Nel nostro esempio abbiamo usato il metodo __construct
, utile per inizializzare la variabile interna $name
. I parametri passati tra parentesi (se previsti) sono quelli richiesti dalla funzione __construct
. Del metodo __construct
e degli altri metodi magici di PHP parleremo più avanti nella guida.