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:
- 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.
- Ychwanegwch ddull i'r dosbarth “Car” o'r enw “getDetails” sy'n dychwelyd gwneuthuriad, model, a blwyddyn y car fel llinyn.
- 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.
- Ychwanegu dull i'r dosbarth “ElectricCar” o'r enw “getBatteryLife” sy'n dychwelyd gwerth yr eiddo “BatriLife”.
- 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();