PHP, come molti altri linguaggi di programmazione orientati agli oggetti, supporta costruttori e distruttori di classi.
Un costruttore è a funzione specifica che viene richiamato automaticamente quando viene formato un oggetto di classe. La funzione principale di un costruttore consiste nell'inizializzare le proprietà dell'oggetto e impostarle sui valori predefiniti o sui valori forniti come argomenti quando l'oggetto viene formato. I costruttori sono dichiarati in PHP con la sintassi del doppio carattere di sottolineatura (__) e la frase "construct". "__construct" deve essere il nome del metodo costruttore. Ecco un esempio di un costruttore in azione nella classe "Pet":
class Pet {
public $nick_name;
public $color;
function __construct($name, $color) {
$this->nick_name = $name;
$this->color = $color;
}
function get_name() {
return $this->nick_name;
}
function get_color() {
return $this->color;
}
}
$cat = new Pet("Whiskers", "Black");
echo $cat->get_name();
echo "<br>";
echo $cat->get_color();
Quando creiamo un nuovo oggetto "Pet" e inseriamo "Whiskers" e "Black" come parametri, il costruttore imposta le proprietà "nick name" e "color" dell'oggetto rispettivamente su "Whiskers" e "Black". I valori di questi attributi possono quindi essere recuperati utilizzando i metodi "get name" e "get color".
Un distruttore, invece, è una particolare procedura che viene invocata ogni volta che un oggetto viene distrutto o rimosso dalla memoria. La sua funzione principale è liberare le risorse che l'oggetto stava utilizzando, come terminare le connessioni al database o cancellare la memoria. I distruttori sono dichiarati in PHP con la sintassi del doppio carattere di sottolineatura (__) e la parola "destroy". "__destruct" deve essere il nome del metodo distruttore. Ecco un esempio di distruttore di classi in azione:
class Pet {
public $nick_name;
public $color;
function __construct($name, $color) {
$this->nick_name = $name;
$this->color = $color;
}
function get_name() {
return $this->nick_name;
}
function get_color() {
return $this->color;
}
function __destruct() {
echo "Goodbye, " . $this->nick_name . "!<br>";
}
}
$cat = new Pet("Whiskers", "Black");
echo $cat->get_name();
echo "<br>";
echo $cat->get_color();
In questo esempio, quando lo script termina o l'oggetto "Pet" viene distrutto, il distruttore viene immediatamente richiamato e visualizza "Goodbye, Whiskers!" sullo schermo.
È fondamentale capire che in PHP costruttori e distruttori non vengono eseguiti manualmente; vengono chiamati automaticamente quando un oggetto viene creato o distrutto. È inoltre possibile specificare valori predefiniti per gli argomenti del costruttore. Ad esempio, se si desidera che il secondo parametro del costruttore sia facoltativo, è possibile definire un valore predefinito come questo:
function __construct($name,$color = "Black") {
$this->nick_name = $name;
$this->color = $color;
}
In questo esempio, se no APPREZZIAMO per il secondo parametro viene fornito al momento della creazione dell'oggetto, la proprietà “color” verrà automaticamente impostata a “Black”.
È anche importante notare che se una classe figlia estende una classe genitore e lo desidera chiamata il costruttore della classe genitore nel proprio costruttore, può usare la sintassi "parent::__construct()" per farlo. Se la classe figlia non ha un proprio costruttore, il costruttore della classe genitore verrà ereditato come funzione normale, a meno che non sia dichiarato privato.
In sintesi, costruttori e distruttori sono metodi speciali utilizzati per inizializzare e rilasciare risorse per oggetti in PHP. Vengono richiamati automaticamente quando un oggetto viene creato o distrutto e possono essere utilizzati per impostare i valori predefiniti per le proprietà dell'oggetto o per eseguire altre attività.
Q&A
D: Cos'è un costruttore in PHP?
R: Un costruttore è una funzione specifica che viene richiamata automaticamente quando viene formato un oggetto di classe. La sua funzione principale è inizializzare le proprietà dell'oggetto, impostandole sui valori predefiniti o sui valori forniti come argomenti al momento della creazione dell'oggetto. I costruttori vengono specificati utilizzando la sintassi del doppio carattere di sottolineatura (__) insieme alla parola "construct" e il nome del metodo del costruttore deve essere "__construct".
D: Come viene dichiarato un costruttore in PHP?
R: I costruttori sono dichiarati in PHP con la sintassi del doppio carattere di sottolineatura (__) e la frase "costrutto". "__construct" deve essere il nome del metodo costruttore.
D: Qual è lo scopo di un distruttore in PHP?
R: Quando un oggetto viene distrutto o cancellato dalla memoria, viene invocato automaticamente un metodo distruttore. La sua funzione principale è liberare le risorse che l'oggetto stava utilizzando, come terminare le connessioni al database o cancellare la memoria.
D: Come viene dichiarato un distruttore in PHP?
R: In PHP, i distruttori vengono dichiarati utilizzando la sintassi del doppio carattere di sottolineatura (__) insieme alla parola "destruct". Il nome del metodo distruttore deve essere "__destruct".
D: È necessario chiamare manualmente costruttori e distruttori in PHP?
R: No, costruttori e distruttori vengono chiamati automaticamente quando un oggetto viene creato o distrutto e non è necessario chiamarli manualmente.
D: Possiamo impostare valori predefiniti per i parametri del costruttore in PHP?
R: Sì, possiamo usare PHP per stabilire i valori predefiniti per gli argomenti del costruttore. Ad esempio, se si desidera che il secondo parametro del costruttore sia facoltativo, è possibile definire un valore predefinito come questo:
function __construct($name, $color = "Black") {
$this->nick_name = $name;
$this->color = $color;
}
D: Come può una classe figlia chiamare il costruttore della classe genitore in PHP?
R: Se una classe figlia estende una classe genitore e vuole chiamare il costruttore della classe genitore nel proprio costruttore, può usare la sintassi “parent::__construct()” per farlo.
esercizi:
- Crea una classe chiamata "Car" con proprietà per "make", "model" e "year" e un costruttore che imposta questi valori quando viene creato un nuovo oggetto.
- Aggiungi un metodo alla classe "Car" chiamato "getDetails" che restituisce la marca, il modello e l'anno dell'auto come una stringa.
- Crea una classe figlia chiamata "ElectricCar" che estende la classe "Car" e ha una proprietà aggiuntiva per "batteryLife" e un costruttore che imposta questo valore.
- Aggiungi un metodo alla classe "ElectricCar" chiamato "getBatteryLife" che restituisce il valore della proprietà "batteryLife".
- Crea un oggetto della classe "ElectricCar" e utilizza i metodi che hai creato per visualizzare i dettagli e la durata della batteria dell'auto.
Risposte:
1.
class Car {
public $make;
public $model;
public $year;
function __construct($make, $model, $year) {
$this->make = $make;
$this->model = $model;
$this->year = $year;
}
}
2.
class Car {
public $make;
public $model;
public $year;
function __construct($make, $model, $year) {
$this->make = $make;
$this->model = $model;
$this->year = $year;
}
function getDetails() {
return $this->make . " " . $this->model . " " . $this->year;
}
}
3.
class ElectricCar extends Car {
public $batteryLife;
function __construct($make, $model, $year, $batteryLife) {
parent::__construct($make, $model, $year);
$this->batteryLife = $batteryLife;
}
}
4.
class ElectricCar extends Car {
public $batteryLife;
function __construct($make, $model, $year, $batteryLife) {
parent::__construct($make, $model, $year);
$this->batteryLife = $batteryLife;
}
function getBatteryLife() {
return $this->batteryLife;
}
}
5.
$electricCar = new ElectricCar("Tesla", "Model S", 2022, 300);
echo $electricCar->getDetails();
echo "<br>";
echo "Battery Life: " . $electricCar->getBatteryLife();