Costruttore e distruttore in PHP

C

Nell'articolo precedente, abbiamo trattato i concetti di base di una classe e degli oggetti. In questo tutorial PHP imparerai costruttore e distruttore nella classe PHP.

Che cos'è un costruttore e un distruttore nella classe PHP?

Costruttore

Come suggerisce il nome, un costrutto costruisce un oggetto. La vera definizione di un costruttore è che inizializza l'oggetto della classe.

Come dichiarare il costruttore in PHP?

Per dichiarare un costruttore in PHP, usa il doppio trattino basso (__) insieme alla parola costrutto. Assicurati che il nome del costruttore debba essere "costruttore".

Per esempio

<?php
class Pet {
  public $nick_name;
  public $color;

  function __construct($name) {
    $this->nick_name = $name;
  }
  function get_name() {
    return $this->nick_name;
  }
}

$cat = new Pet("Cat");
echo $cat>get_name();
?>
  • Nell'esempio sopra, creiamo un costruttore usando i doppi caratteri di sottolineatura.
  • Creiamo un oggetto, che utilizza il costruttore automaticamente e lo inizializza con Cat.
  • Non è necessario chiamare la funzione set_name per impostare il nome nell'oggetto cat.

Quindi, è chiaro dalla discussione precedente sul costruttore che semplifica l'inizializzazione dell'oggetto e non richiede alcuna funzione setter per farlo.

Altri esempi su costruttore e distruttore in PHP

<?php
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("Cat", "Brown");
echo $cat->get_name();
echo "<br>";
echo $cat->get_color();
?>
  • Nell'esempio sopra, creiamo un costruttore con due parametri e inizializziamo gli attributi nick_name e color della classe con questi parametri.
  • Creiamo un nuovo oggetto cat e passiamo i due parametri richiesti dal costruttore. Assicurati che per creare un oggetto richieda il numero di parametri in base al costruttore della classe a cui appartiene.
  • Dopo aver creato l'oggetto, lo abbiamo testato chiamando get_name e get_color setter della classe. Verrà visualizzato il nome dell'oggetto gatto come "gatto" e il suo colore come "marrone".

Puoi trovare il riferimento alla documentazione ufficiale del costruttore in PHP qui.

Concetto importante sul costruttore

OOP consente il meccanismo di ereditarietà mediante il quale una classe figlia può estendere una classe base o una classe genitore. Lo tratteremo in dettaglio, poiché per ora ci basta la sua descrizione per capire il concetto. Se la classe figlia sta estendendo la classe genitore e vuole chiamare il costruttore della classe genitore nel proprio costruttore, usa semplicemente parent::construcor_name all'interno del suo costruttore.

Se la classe figlia non contiene il suo costruttore, allora il costruttore della classe base o genitore viene ereditato come una normale funzione se non dichiarato come privato.

Come dichiarare il parametro predefinito nel costruttore?

Come hai letto sopra, un costruttore può avere più parametri, che vengono forniti durante la creazione dell'oggetto che lo utilizza. Tuttavia, se si desidera rendere i parametri non obbligatori da fornire durante la creazione dell'oggetto, è possibile impostare un valore predefinito del parametro del costruttore. Per esempio.

public function __construct(int $x, int $y = 0) {
        $this->x = $x;
        $this->y = $y;
    }
  • Nell'esempio sopra, a $y viene assegnato un valore predefinito di 0.
  • Se viene creato l'oggetto $obj = new class (2), il valore predefinito di y verrà impostato a 0 dal costruttore.

destructor

Lo scopo principale del distruttore è distruggere o rimuovere l'oggetto dalla memoria dopo che l'esecuzione del programma è stata interrotta o il processo è terminato.

In PHP, non è necessario chiamare il distruttore per liberare la memoria occupata dagli oggetti perché chiama automaticamente il distruttore per rimuovere tutti gli oggetti dopo che lo script interrompe la sua esecuzione.

Tuttavia, puoi dichiarare che il distruttore stampi un messaggio che ti aiuti a convalidare o controllare quando il distruttore chiamerà e quale elaborazione viene eseguita all'interno del distruttore.

Guarda il seguente esempio per dichiarare il distruttore in PHP

<?php
class Pet {
  public $nick_name;
  public $color;

  function __construct($name) {
    $this->nick_name = $name;
  }
  function __destruct() {
    echo "The Pet is {$this->nick_name}.";
  }
}

$cat= new Pet("cat");
?>
  • Nell'esempio sopra. creiamo un oggetto usando il costruttore.
  • Stampiamo qualche messaggio all'interno del metodo decstruct.
  • Prova eseguendo lo script. Osserva l'output dello script per il messaggio all'interno della distruzione.

Un altro esempio di distruttore

<?php
class Pet {
  public $nick_name;
  public $color;

  function __construct($name, $color = "brown") {
    $this->name = $nick_name;
    $this->color = $color;
  }
  function __destruct() {
    echo "The Pet is {$this->nick_name} and its color is {$this->color}.";
  }
}

$cat =  new Pet("Cat");
?>
  • Nell'esempio sopra, usiamo il costruttore per inizializzare l'oggetto. Osservare che il costruttore accetta due parametri ma gliene stiamo passando uno perché il costruttore usa il valore predefinito di color e lo assegna all'attributo color dell'oggetto.
  • Stampiamo un messaggio all'interno del metodo desctruct insieme al nick_name e al colore.
  • Osservare l'output dello script nel punto di terminazione.

Inoltre, puoi chiamare il distruttore per eseguire alcune attività che devono essere eseguite al momento della chiusura dello script. Come chiudere le connessioni al database o gli oggetti del flusso di file esterni.

I distruttori sembrano semplici dal punto di vista dell'implementazione. Tuttavia, svolgono un ruolo fondamentale per mantenere la memoria al sicuro da perdite.

Se un oggetto risiede nella memoria dopo la chiusura dello script PHP, provoca una perdita di memoria. Ciò può causare seri problemi, specialmente per applicazioni su larga scala.

Puoi trovare il riferimento alla documentazione ufficiale del distruttore in PHP qui.

Aggiungi un commento

Rete di tutor

Impara PHP dalla A alla Z