Konstruktör och destruktör i PHP

C

I den tidigare artikeln har vi täckt de grundläggande begreppen för en klass och objekt. I denna PHP-handledning kommer du att lära dig konstruktor och destruktor i PHP-klassen.

Vad är en konstruktör och destruktör i PHP-klassen?

Konstruktör

Som namnet antyder, konstruerar en konstruktion ett objekt. Den verkliga definitionen av en konstruktor är att den initierar klassens objekt.

Hur deklarerar man konstruktorn i PHP?

För att deklarera en konstruktor i PHP, använd dubbelt understreck (__) tillsammans med ordet konstruktion. Se till att namnet på konstruktören måste vara "konstruktör".

Till exempel

<?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();
?>
  • I exemplet ovan skapar vi en konstruktor med dubbla understreck.
  • Vi skapar ett objekt som använder konstruktorn automatiskt och initialiserar det med Cat.
  • Vi behöver inte anropa set_name-funktionen för att ställa in namnet i kattobjektet.

Så det är tydligt från diskussionen ovan om att konstruktorn gör det enkelt att initiera objektet och kräver ingen inställningsfunktion för att göra det.

Fler exempel om konstruktör och destruktor i 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();
?>
  • I exemplet ovan skapar vi en konstruktor med två parametrar och initialiserar klassens smeknamn och färgattribut med dessa parametrar.
  • Vi skapar ett nytt kattobjekt och skickar de två parametrarna som krävs av konstruktören. Se till att, för att skapa ett objekt, det kräver antalet parametrar enligt konstruktorn för den klass som det tillhör.
  • Efter att ha skapat objektet testade vi det genom att anropa get_name och get_color-sättare för klassen. Den kommer att mata ut namnet på kattobjektet som "katt" och dess färg som "brun".

Du kan hitta referensen till den officiella konstruktörsdokumentationen i PHP här.

Viktigt koncept om konstruktör

OOP tillåter arvsmekanismen genom vilken en barnklass kan utöka en basklass eller överordnad klass. Vi kommer att täcka det i detalj, för nu behöver vi bara dess beskrivning för att förstå konceptet. Om den underordnade klassen utökar den överordnade klassen och vill anropa den överordnade klassens konstruktor i sin egen konstruktor, använd helt enkelt parent::construcor_name i dess konstruktor.

Om den underordnade klassen inte innehåller sin konstruktor, ärvs konstruktorn för bas- eller överordnad klass som en normal funktion om den inte deklareras som privat.

Hur deklarerar man standardparameter i konstruktorn?

Som du läste ovan kan en konstruktor ha flera parametrar, som tillhandahålls när du skapar objektet med det. Men om du vill göra parametrar inte obligatoriska att tillhandahålla när du skapar objektet, kan du ställa in ett standardvärde för konstruktorparametern. Till exempel.

public function __construct(int $x, int $y = 0) {
        $this->x = $x;
        $this->y = $y;
    }
  • I exemplet ovan tilldelas $y ett standardvärde på 0.
  • Om objektet $obj = new class (2) skapas, kommer standardvärdet för y att sättas till 0 av konstruktorn.

destructor

Huvudsyftet med förstöraren är att förstöra eller ta bort objektet från minnet efter att exekveringen av programmet har stoppats eller processen avslutats.

I PHP behöver du inte anropa destruktorn för att frigöra minnet som tas av objekten eftersom den automatiskt anropar destructorn för att ta bort alla objekt efter att skriptet stoppar dess exekvering.

Däremot kan du deklarera destructor att skriva ut något meddelande som hjälper dig att validera eller kontrollera när destructor kommer att anropa och vilken bearbetning som görs inuti destructorn.

Titta på följande exempel för att deklarera destructor i 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");
?>
  • I exemplet ovan. vi skapar ett objekt med hjälp av konstruktorn.
  • Vi skriver ut något meddelande inuti desctruct-metoden.
  • Testa genom att köra skriptet. Observera utdata från skriptet för meddelandet inuti destruct.

Ett annat exempel på destructor

<?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");
?>
  • I exemplet ovan använder vi konstruktorn för att initialisera objektet. Observera att konstruktorn accepterar två parametrar men vi skickar den en eftersom konstruktorn använder standardvärdet för färg och tilldelar objektets färgattribut.
  • Vi skriver ut ett meddelande inuti desctruct-metoden tillsammans med smeknamn och färg.
  • Observera utdata från skriptet vid avslutningspunkten.

Du kan också ringa destruktören för att utföra vissa uppgifter som måste göras vid tidpunkten för avslutning av skriptet. Som att stänga databasanslutningarna eller externa filströmsobjekt.

Destruktörer ser enkla ut enligt implementeringssynpunkt. Men de spelar en viktig roll för att hålla minnet säkert från läckage.

Om något objekt finns i minnet efter att PHP-skriptet avslutats, orsakar det minnesläckage. Det kan orsaka allvarliga problem, särskilt för storskaliga applikationer.

Du kan hitta referensen till den officiella destruktordokumentationen i PHP här.

Lägg till kommentar

Lärarnätverk

Lär dig PHP från A till Ö