Constructori și destructori în PHP

OOP în PHP: un ghid pentru începători
Modificatori de acces în PHP

PHP, ca multe alte limbaje de programare orientate pe obiecte, acceptă constructori și destructori de clasă.

Un constructor este un funcție specifică care este invocat automat atunci când se formează un obiect de clasă. Funcția principală a unui constructor este de a inițializa proprietățile obiectului și de a le seta la valorile implicite sau la valorile furnizate ca argumente atunci când obiectul este format. Constructorii sunt declarați în PHP cu sintaxa de subliniere dublă (__) și expresia „construct”. „__construct” trebuie să fie numele metodei constructorului. Iată un exemplu de constructor în acțiune în clasa „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();

Când creăm un nou obiect „Pet” și punem „Whiskers” și „Black” ca parametri, constructorul setează proprietățile „nickname” și „culoare” ale obiectului la „Whiskers” și, respectiv, „Black”. Valorile acestor atribute pot fi apoi preluate folosind metodele „obține numele” și „obține culoare”.

Un destructor, pe de altă parte, este o procedură particulară care este invocată ori de câte ori un obiect este distrus sau eliminat din memorie. Funcția sa principală este de a elibera resursele pe care obiectul le folosea, cum ar fi terminarea conexiunilor la baza de date sau ștergerea memoriei. Destructorii sunt declarați în PHP cu sintaxa de subliniere dublă (__) și cuvântul „distruge”. „__destruct” trebuie să fie numele metodei destructorului. Iată un exemplu de destructor de clasă în acțiune:

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();

În acest exemplu, când scriptul se termină sau obiectul „Pet” este distrus, destructorul este imediat invocat și afișează „La revedere, Whiskers!” pe ecran.

Este vital să înțelegem că în PHP, constructorii și destructorii nu sunt executați manual; sunt apelate automat atunci când un obiect este creat sau distrus. De asemenea, puteți specifica valori implicite pentru argumentele constructorului. De exemplu, dacă doriți ca al doilea parametru al constructorului să fie opțional, puteți defini o valoare implicită ca aceasta:

function __construct($name,$color = "Black") {
$this->nick_name = $name;
$this->color = $color;
}

În acest exemplu, dacă nu valoare pentru că al doilea parametru este furnizat atunci când obiectul este creat, proprietatea „culoare” va fi setată automat la „Negru”.

De asemenea, este important să rețineți că, dacă o clasă copil extinde o clasă părinte și dorește apel constructorul clasei părinte în propriul său constructor, poate folosi sintaxa „parent::__construct()” pentru a face acest lucru. Dacă clasa copil nu are propriul constructor, constructorul clasei părinte va fi moștenit ca o funcție normală, cu excepția cazului în care este declarată ca privată.

În concluzie, constructori si distrugatori sunt metode speciale care sunt folosite pentru a inițializa și elibera resurse pentru obiecte în PHP. Acestea sunt apelate automat atunci când un obiect este creat sau distrus și pot fi folosite pentru a seta valori implicite pentru proprietățile obiectului sau pentru a efectua alte sarcini.

Q & A

Î: Ce este un constructor în PHP?

R: Un constructor este o funcție specifică care este invocată automat atunci când se formează un obiect de clasă. Funcția sa principală este de a inițializa proprietățile obiectului, setându-le la valorile implicite sau la valorile furnizate ca argumente atunci când obiectul este creat. Constructorii sunt specificați folosind sintaxa de subliniere dublă (__) împreună cu cuvântul „construct”, iar numele metodei constructorului trebuie să fie „__construct”.

Î: Cum este declarat un constructor în PHP?
R: Constructorii sunt declarați în PHP cu sintaxa de subliniere dublă (__) și expresia „construct”. „__construct” trebuie să fie numele metodei constructorului.

Î: Care este scopul unui destructor în PHP?
R: Când un obiect este distrus sau șters din memorie, este invocată automat o metodă de distrugere. Funcția sa principală este de a elibera resursele pe care obiectul le folosea, cum ar fi terminarea conexiunilor la baza de date sau ștergerea memoriei.

Î: Cum este declarat un destructor în PHP?
R: În PHP, destructorii sunt declarați folosind sintaxa de subliniere dublă (__) împreună cu cuvântul „distruge”. Numele metodei destructorului trebuie să fie „__destruct”.

Î: Trebuie să apelăm manual constructorii și destructorii în PHP?
R: Nu, constructorii și destructorii sunt apelați automat atunci când un obiect este creat sau distrus și nu trebuie să îi apelăm manual.

Î: Putem seta valori implicite pentru parametrii constructorului în PHP?
R: Da, putem folosi PHP pentru a stabili valorile implicite pentru argumentele constructorului. De exemplu, dacă doriți ca al doilea parametru al constructorului să fie opțional, puteți defini o valoare implicită ca aceasta:

function __construct($name, $color = "Black") {
    $this->nick_name = $name;
    $this->color = $color;
  }

Î: Cum poate o clasă copil să apeleze constructorul clasei părinte în PHP?
R: Dacă o clasă copil extinde o clasă părinte și dorește să apeleze constructorul clasei părinte în propriul său constructor, poate folosi sintaxa „parent::__construct()” pentru a face acest lucru.

Exerciții:

  1. Creați o clasă numită „Mașină” cu proprietăți pentru „marcă”, „model” și „an” și un constructor care setează aceste valori atunci când este creat un obiect nou.
  2. Adăugați o metodă la clasa „Mașină” numită „getDetails” care returnează marca, modelul și anul mașinii sub formă de șir.
  3. Creați o clasă copil numită „ElectricCar” care extinde clasa „Car” și are o proprietate suplimentară pentru „batteryLife” și un constructor care setează această valoare.
  4. Adăugați o metodă la clasa „ElectricCar” numită „getBatteryLife” care returnează valoarea proprietății „batteryLife”.
  5. Creați un obiect din clasa „ElectricCar” și utilizați metodele pe care le-ați creat pentru a afișa detaliile și durata de viață a bateriei mașinii.

Răspunsuri:

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 în PHP: un ghid pentru începători
Modificatori de acces în PHP
închide

Rămâneți la curent cu PHP!

Nu trimitem spam!

en English
X
Derulaţi în sus