Rakentaja ja tuhoaja PHP:ssä

C

Edellisessä artikkelissa olemme käsitelleet luokan ja objektien peruskäsitteitä. Tässä PHP-opetusohjelmassa opit rakentamaan ja tuhoamaan PHP-luokassa.

Mikä on konstruktori ja tuhoaja PHP-luokassa?

Rakentaja

Kuten nimestä voi päätellä, rakenne rakentaa objektin. Konstruktorin todellinen määritelmä on, että se alustaa luokan objektin.

Kuinka ilmoittaa konstruktori PHP:ssä?

Jos haluat ilmoittaa rakentajan PHP:ssä, käytä kaksoisalaviivaa (__) yhdessä sanan konstruktio kanssa. Varmista, että rakentajan nimen tulee olla "constructor".

Esimerkiksi

<?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();
?>
  • Yllä olevassa esimerkissä luomme rakentajan käyttämällä kaksoisalaviivoja.
  • Luomme objektin, joka käyttää konstruktoria automaattisesti ja alustaa sen Catilla.
  • Meidän ei tarvitse kutsua set_name-funktiota nimen asettamiseksi cat-objektissa.

Yllä olevasta keskustelusta on siis selvää, että konstruktori tekee objektin alustamisesta helppoa, eikä se vaadi mitään setter-toimintoa tehdäkseen niin.

Lisää esimerkkejä PHP:n konstruktorista ja destructorista

<?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();
?>
  • Yllä olevassa esimerkissä luomme rakentajan kahdella parametrilla ja alustamme luokan nick_name- ja color -attribuutit näillä parametreilla.
  • Luomme uuden kissaobjektin ja välitämme kaksi konstruktorin vaatimaa parametria. Varmista, että objektin luominen vaatii sen luokan konstruktorin mukaisen määrän parametreja, johon se kuuluu.
  • Objektin luomisen jälkeen testasimme sitä kutsumalla luokan get_name ja get_color setters. Se tulostaa kissaobjektin nimeksi "kissa" ja sen värin "ruskeaksi".

Löydät viittauksen PHP:n viralliseen konstruktoridokumentaatioon tätä.

Tärkeä käsite rakentajasta

OOP mahdollistaa periytymismekanismin, jolla aliluokka voi laajentaa perusluokkaa tai yläluokkaa. Käsittelemme sen yksityiskohtaisesti, sillä toistaiseksi tarvitsemme vain sen kuvauksen ymmärtääksemme käsitteen. Jos aliluokka laajentaa yläluokkaa ja haluaa kutsua yläluokan rakentajaa omassa rakentajassaan, käytä sen rakentajan sisällä parent::construcor_name.

Jos aliluokka ei sisällä rakentajaansa, perus- tai yläluokan konstruktori periytyy normaalina funktiona, jos sitä ei ole ilmoitettu yksityiseksi.

Kuinka ilmoittaa oletusparametri konstruktorissa?

Kuten yllä luet, rakentajalla voi olla useita parametreja, jotka tarjotaan luotaessa objektia sitä käyttämällä. Mutta jos haluat, että parametrit eivät ole pakollisia objektia luotaessa, voit määrittää konstruktoriparametrin oletusarvon. Esimerkiksi.

public function __construct(int $x, int $y = 0) {
        $this->x = $x;
        $this->y = $y;
    }
  • Yllä olevassa esimerkissä $y:lle on määritetty oletusarvo 0.
  • Jos objekti $obj = uusi luokka (2) luodaan, rakentaja asettaa y:n oletusarvoksi 0.

destructor

Destruktorin päätarkoituksena on tuhota tai poistaa esine muistista ohjelman suorituksen tai prosessin lopettamisen jälkeen.

PHP:ssä sinun ei tarvitse kutsua destructoria vapauttaaksesi objektien viemää muistia, koska se kutsuu automaattisesti tuhoajaa poistamaan kaikki objektit, kun komentosarja lopettaa suorituksensa.

Voit kuitenkin ilmoittaa destructorin tulostamaan viestin, joka auttaa vahvistamaan tai tarkistamaan milloin destructor kutsuu ja mitä käsittelyä destructorissa tapahtuu.

Katso seuraava esimerkki paljastaaksesi destructorin PHP:ssä

<?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");
?>
  • Yllä olevassa esimerkissä. luomme objektin konstruktoria käyttämällä.
  • Tulostamme viestin desctruct-menetelmän sisällä.
  • Testaa suorittamalla komentosarja. Tarkkaile destructin sisällä olevan sanoman komentosarjan tulosta.

Toinen esimerkki tuhoajista

<?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");
?>
  • Yllä olevassa esimerkissä käytämme konstruktoria objektin alustamiseen. Tarkkaile, että rakentaja hyväksyy kaksi parametria, mutta välitämme sen yhden, koska konstruktori käyttää värin oletusarvoa ja määrittää objektin color-attribuutin.
  • Tulostamme jonkin viestin desctruct-menetelmän sisällä lempinimen ja värin kanssa.
  • Tarkkaile skriptin tulosta päätepisteessä.

Voit myös kutsua tuhoajaa suorittamaan joitain tehtäviä, jotka on tehtävä komentosarjan lopettamisen yhteydessä. Kuten tietokantayhteyksien tai ulkoisten tiedostovirtaobjektien sulkeminen.

Tuhoajat näyttävät yksinkertaisilta toteutuksen näkökulmasta. Niillä on kuitenkin tärkeä rooli, jotta muisti ei vuoda.

Jos jokin objekti jää muistiin PHP-skriptin päätyttyä, se aiheuttaa muistivuotoja. Tämä voi aiheuttaa vakavia ongelmia, etenkin suurissa sovelluksissa.

Löydät viittauksen viralliseen tuhoajan dokumentaatioon PHP:ssä tätä.

lisää kommentti

Tutor-verkosto

Opi PHP pisteestä A paikkaan Z