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
class
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
person
$customer
getName()
$customer1
person
$customer1->getName();
Il codice produrrà il seguente output:
Cliente: Giuseppe Rossi
Cliente: Guglielmo Cancelli
Nota:
Nel nostro esempio abbiamo usato il metodo __construct
$name
__construct
__construct
metodi magici