Adeiladwyr a Dinistrwyr yn PHP

OOP yn PHP: Canllaw i Ddechreuwyr
Newidwyr Mynediad yn PHP

Mae PHP, fel llawer o ieithoedd rhaglennu gwrthrych-ganolog eraill, yn cefnogi adeiladwyr dosbarth a distrywwyr.

Adeiladwr yw a swyddogaeth benodol sy'n cael ei weithredu'n awtomatig pan fydd gwrthrych dosbarth yn cael ei ffurfio. Prif swyddogaeth adeiladwr yw cychwyn priodweddau'r gwrthrych a'u gosod i werthoedd rhagosodedig neu werthoedd a gyflenwir fel dadleuon pan ffurfir y gwrthrych. Mae llunwyr yn cael eu datgan yn PHP gyda'r gystrawen tansgorio dwbl (__) a'r ymadrodd “construct”. Rhaid i “__construct” fod yn enw dull yr adeiladwr. Dyma enghraifft o adeiladwr ar waith yn y dosbarth “Anifail anwes”:

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

Pan fyddwn yn creu gwrthrych “Anifail Anwes” newydd ac yn rhoi “Whiskers” a “Black” i mewn fel paramedrau, mae'r adeiladwr yn gosod priodweddau “llysenw” a “lliw” y gwrthrych i “Whiskers” a “Black,” yn y drefn honno. Yna gellir adfer gwerthoedd y priodoleddau hyn gan ddefnyddio'r dulliau “cael enw” a “cael lliw”.

Mae dinistrwr, ar y llaw arall, yn weithdrefn benodol a ddefnyddir pan fydd gwrthrych yn cael ei ddinistrio neu ei dynnu o'r cof. Ei brif swyddogaeth yw rhyddhau adnoddau yr oedd y gwrthrych yn eu defnyddio, megis terfynu cysylltiadau cronfa ddata neu glirio cof. Mae dinistrwyr yn cael eu datgan yn PHP gyda'r gystrawen tansgorio dwbl (__) a'r gair “dinistrio”. Rhaid i “__destruct” fod yn enw ar y dull dinistrio. Dyma enghraifft o ddinistrioydd dosbarth ar waith:

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

Yn yr enghraifft hon, pan fydd y sgript yn dod i ben neu pan fydd y gwrthrych “Anifail Anwes” yn cael ei ddinistrio, mae'r dinistrwr yn cael ei alw ar unwaith ac yn arddangos “Hwyl Fawr, Chwisgwyr!” ar y sgrin.

Mae'n hanfodol deall nad yw llunwyr a distrywwyr yn cael eu perfformio â llaw yn PHP; fe'u gelwir yn awtomatig pan fydd gwrthrych yn cael ei greu neu ei ddinistrio. Gallwch hefyd nodi gwerthoedd rhagosodedig ar gyfer dadleuon lluniwr. Er enghraifft, os ydych chi am i ail baramedr yr adeiladwr fod yn ddewisol, gallwch ddiffinio gwerth rhagosodedig fel hyn:

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

Yn yr enghraifft hon, os na gwerth ar gyfer yr ail baramedr yn cael ei ddarparu pan fydd y gwrthrych yn cael ei greu, bydd yr eiddo "lliw" yn cael ei osod yn awtomatig i "Du".

Mae hefyd yn bwysig nodi os yw dosbarth plentyn yn ymestyn dosbarth rhiant ac eisiau gwneud hynny ffoniwch adeiladwr y dosbarth rhiant yn ei adeiladwr ei hun, gall ddefnyddio'r gystrawen “parent::__construct()” i wneud hynny. Os nad oes gan y dosbarth plentyn ei adeiladwr ei hun, bydd adeiladwr y dosbarth rhiant yn cael ei etifeddu fel swyddogaeth arferol, oni bai ei fod yn cael ei ddatgan yn breifat.

I grynhoi, adeiladwyr a distrywwyr yn ddulliau arbennig a ddefnyddir i gychwyn a rhyddhau adnoddau ar gyfer gwrthrychau yn PHP. Fe'u gelwir yn awtomatig pan fydd gwrthrych yn cael ei greu neu ei ddinistrio a gellir eu defnyddio i osod gwerthoedd rhagosodedig ar gyfer priodweddau gwrthrych neu i gyflawni tasgau eraill.

Holi ac Ateb

C: Beth yw adeiladwr yn PHP?

A: Mae adeiladwr yn swyddogaeth benodol a weithredir yn awtomatig pan ffurfir gwrthrych dosbarth. Ei brif swyddogaeth yw cychwyn priodweddau'r gwrthrych, gan eu gosod i werthoedd diofyn neu werthoedd a gyflenwir fel dadleuon pan fydd y gwrthrych yn cael ei greu. Pennir llunwyr gan ddefnyddio'r gystrawen tansgorio dwbl (__) ynghyd â'r gair “adeiladu”, a rhaid i enw'r dull lluniwr fod yn “__construct”.

C: Sut mae adeiladwr yn cael ei ddatgan yn PHP?
A: Mae adeiladwyr yn cael eu datgan yn PHP gyda'r gystrawen tansgorio dwbl (__) a'r ymadrodd “construct”. Rhaid i “__construct” fod yn enw dull yr adeiladwr.

C: Beth yw pwrpas dinistrwr yn PHP?
A: Pan fydd gwrthrych yn cael ei ddinistrio neu ei ddileu o'r cof, mae dull dinistrio yn cael ei ddefnyddio'n awtomatig. Ei brif swyddogaeth yw rhyddhau adnoddau yr oedd y gwrthrych yn eu defnyddio, megis terfynu cysylltiadau cronfa ddata neu glirio cof.

C: Sut mae dinistrwr yn cael ei ddatgan yn PHP?
A: Yn PHP, mae distrywyddion yn cael eu datgan gan ddefnyddio'r gystrawen tansgorio dwbl (__) ynghyd â'r gair “destruct”. Rhaid i enw'r dull dinistrio fod yn “__destruct”.

C: A oes angen i ni alw adeiladwyr a dinistrwyr â llaw yn PHP?
A: Na, gelwir adeiladwyr a dinistrwyr yn awtomatig pan fydd gwrthrych yn cael ei greu neu ei ddinistrio ac nid oes angen i ni eu galw â llaw.

C: A allwn ni osod gwerthoedd diofyn ar gyfer paramedrau lluniwr yn PHP?
A: Ydym, gallwn ddefnyddio PHP i sefydlu gwerthoedd diofyn ar gyfer dadleuon adeiladwr. Er enghraifft, os ydych chi am i ail baramedr yr adeiladwr fod yn ddewisol, gallwch ddiffinio gwerth rhagosodedig fel hyn:

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

C: Sut gall dosbarth plentyn alw'r adeiladwr dosbarth rhiant yn PHP?
A: Os yw dosbarth plentyn yn ymestyn dosbarth rhiant ac eisiau galw'r adeiladwr dosbarth rhiant yn ei adeiladwr ei hun, gall ddefnyddio'r gystrawen “rhiant:: __construct()” i wneud hynny.

Ymarferion:

  1. Creu dosbarth o'r enw “Car” gyda phriodweddau ar gyfer “gwneud”, “model”, a “blwyddyn” ac adeiladwr sy'n gosod y gwerthoedd hyn pan fydd gwrthrych newydd yn cael ei greu.
  2. Ychwanegwch ddull i'r dosbarth “Car” o'r enw “getDetails” sy'n dychwelyd gwneuthuriad, model, a blwyddyn y car fel llinyn.
  3. Creu dosbarth plentyn o'r enw “ElectricCar” sy'n ymestyn y dosbarth “Car” ac sydd ag eiddo ychwanegol ar gyfer “Bywyd Batri” ac adeiladwr sy'n gosod y gwerth hwn.
  4. Ychwanegu dull i'r dosbarth “ElectricCar” o'r enw “getBatteryLife” sy'n dychwelyd gwerth yr eiddo “BatriLife”.
  5. Crëwch wrthrych o’r dosbarth “ElectricCar” a defnyddiwch y dulliau a grëwyd gennych i arddangos manylion a bywyd batri’r car.

Atebion:

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 yn PHP: Canllaw i Ddechreuwyr
Newidwyr Mynediad yn PHP
cau

Cadwch y wybodaeth ddiweddaraf am PHP!

Nid ydym yn sbam!

en English
X
Sgroliwch i'r brig