Constructor și Destructor în PHP

C

În articolul anterior, am acoperit conceptele de bază ale unei clase și ale obiectelor. În acest tutorial PHP, veți învăța constructor și destructor în clasa PHP.

Ce este un constructor și un destructor în clasa PHP?

Constructor

După cum sugerează și numele, un construct construiește un obiect. Definiția reală a unui constructor este că inițializează obiectul clasei.

Cum se declară constructorul în PHP?

Pentru a declara un constructor în PHP, folosiți litera de subliniere dublă (__) împreună cu cuvântul construct. Asigurați-vă că numele constructorului trebuie să fie „constructor”.

De exemplu

<?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();
?>
  • În exemplul de mai sus, creăm un constructor folosind caractere de subliniere duble.
  • Creăm un obiect, care utilizează automat constructorul și îl inițializam cu Cat.
  • Nu trebuie să apelăm funcția set_name pentru a seta numele în obiectul cat.

Deci, reiese clar din discuția de mai sus despre constructor, facilitează inițializarea obiectului și nu necesită nicio funcție de setare pentru a face acest lucru.

Mai multe exemple despre constructor și destructor în 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();
?>
  • În exemplul de mai sus, creăm un constructor cu doi parametri și inițializam atributele nick_name și culoare ale clasei cu acești parametri.
  • Creăm un nou obiect cat și trecem cei doi parametri solicitați de constructor. Asigurați-vă că, pentru a crea un obiect, acesta necesită numărul de parametri în funcție de constructorul clasei căreia îi aparține.
  • După crearea obiectului, l-am testat apelând setarii get_name și get_color ai clasei. Va scoate numele obiectului pisică ca „pisica” și culoarea acestuia ca „maro”.

Puteți găsi referința la documentația oficială a constructorului în PHP aici.

Concept important despre constructor

OOP permite mecanismul de moștenire prin care o clasă copil poate extinde o clasă de bază sau o clasă părinte. O vom acoperi în detaliu, deoarece deocamdată, avem nevoie doar de descrierea lui pentru a înțelege conceptul. Dacă clasa copil extinde clasa părinte și dorește să apeleze constructorul clasei părinte în propriul său constructor, pur și simplu utilizați parent::constructor_name în interiorul constructorului său.

Dacă clasa copil nu conține constructorul său, atunci constructorul clasei de bază sau părinte este moștenit ca o funcție normală dacă nu este declarat ca privat.

Cum se declară parametrul implicit în constructor?

După cum ați citit mai sus, un constructor poate avea mai mulți parametri, care sunt furnizați în timpul creării obiectului folosindu-l. Dar, dacă doriți ca parametrii să nu fie obligatorii în timpul creării obiectului, puteți seta o valoare implicită a parametrului constructorului. De exemplu.

public function __construct(int $x, int $y = 0) {
        $this->x = $x;
        $this->y = $y;
    }
  • În exemplul de mai sus, lui $y i se atribuie o valoare implicită de 0.
  • Dacă este creat obiectul $obj = clasă nouă (2), valoarea implicită a lui y va fi setată la 0 de către constructor.

distrugător

Scopul principal al destructorului este de a distruge sau de a elimina obiectul din memorie după ce execuția programului este oprită sau procesul este terminat.

În PHP, nu trebuie să apelați destructorul pentru a elibera memoria luată de obiecte, deoarece îl cheamă automat pe destructor pentru a elimina toate obiectele după ce scriptul oprește execuția.

Cu toate acestea, puteți declara destructorul să imprime un mesaj care vă ajută să validați sau să verificați când va apela destructorul și ce procesare se face în interiorul destructorului.

Uitați-vă la următorul exemplu pentru a declara destructor în 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");
?>
  • În exemplul de mai sus. creăm un obiect folosind constructorul.
  • Printăm un mesaj în interiorul metodei descstruct.
  • Testați rulând scriptul. Observați rezultatul scriptului pentru mesajul din interiorul destruct.

Un alt exemplu de distrugător

<?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");
?>
  • În exemplul de mai sus, folosim constructorul pentru a inițializa obiectul. Observatorul că constructorul acceptă doi parametri, dar îi transmitem unul, deoarece constructorul folosește valoarea implicită a culorii și o atribuie atributului de culoare al obiectului.
  • Tipărim un mesaj în cadrul metodei descstruct împreună cu nick_name și culoare.
  • Observați rezultatul scriptului la punctul de terminare.

De asemenea, puteți apela destructorul pentru a efectua unele sarcini care trebuie făcute în momentul încheierii scriptului. De exemplu, închiderea conexiunilor la baza de date sau a obiectelor fluxului de fișiere externe.

Destructorii arată simpli în funcție de punctul de vedere al implementării. Cu toate acestea, ele joacă un rol vital pentru a proteja memoria împotriva scurgerilor.

Dacă orice obiect se află în memorie după terminarea scriptului PHP, acesta cauzează pierderi de memorie. Acest lucru poate cauza probleme grave, în special pentru aplicații la scară largă.

Puteți găsi referința la documentația oficială a destructorului în PHP aici.

Adaugă comentariu

Rețeaua de tutori

Învață PHP de la A la Z