Costruttori e distruttori in PHP

OOP in PHP: una guida per principianti
Modificatori di accesso in PHP

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:

  1. 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.
  2. Aggiungi un metodo alla classe "Car" chiamato "getDetails" che restituisce la marca, il modello e l'anno dell'auto come una stringa.
  3. 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.
  4. Aggiungi un metodo alla classe "ElectricCar" chiamato "getBatteryLife" che restituisce il valore della proprietà "batteryLife".
  5. 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();
OOP in PHP: una guida per principianti
Modificatori di accesso in PHP
en English
X
Scorrere fino a Top