PHP, mîna gelek zimanên din ên bernamesaziyê yên objekt-oriented, çêker û xerakerên polê piştgirî dike.
Avaker a fonksiyona taybetî ku dema ku tiştek çînek çêbibe bixweber tê gazî kirin. Fonksiyona bingehîn a çêker ew e ku taybetmendiyên objektê bide destpêkirin û wan li gorî nirxên xwerû an nirxên ku wekî arguman têne peyda kirin dema ku tişt çêdibe destnîşan bike. Avaker di PHP-ê de bi hevoksaziya dualî (__) û hevoka "avakirin" têne ragihandin. Divê "__construct" navê rêbaza çêker be. Li vir mînakek çêkerek di çalakiyê de di çîna "Pet" de ye:
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();
Dema ku em hêmanek nû ya "Pet" diafirînin û "Whiskers" û "Black" wekî parameteran bi cih dikin, çêker taybetmendiya "navdêr" û "reng" ya objektê bi rêzê li "Whiskers" û "Black" destnîşan dike. Dûv re dibe ku nirxên van taybetmendiyan bi karanîna rêbazên "navê bistînin" û "reng bistînin" werin wergirtin.
Ji aliyek din ve, wêranker pêvajoyek taybetî ye ku gava ku tiştek ji bîrê tê hilweşandin an jêbirin tête gazî kirin. Fonksiyona wê ya bingehîn ew e ku çavkaniyên ku tişt bikar tîne azad bike, wek bidawîkirina girêdanên databasê an paqijkirina bîranînê. Wêranker di PHP-ê de bi hevoksaziya dualî (__) û peyva "hilweşandin" têne ragihandin. Divê "__destruct" navê rêbaza wêranker be. Li vir mînakek wêrankerek pola di çalakiyê de ye:
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();
Di vê nimûneyê de, dema ku senaryo bi dawî dibe an jî tişta "Pet" tê hilweşandin, destruktor tavilê tê gazî kirin û "Bi xatirê te, Whiskers!" li ser ekranê.
Pêdivî ye ku meriv fêm bike ku di PHP-ê de, çêker û xeraker bi destan nayên kirin; ew bixweber têne gotin dema ku tiştek çêkirî an hilweşandin. Her weha hûn dikarin ji bo argumanên çêker nirxên xwerû diyar bikin. Mînakî, heke hûn dixwazin ku pîvana duyemîn a çêker vebijarkî be, hûn dikarin nirxek xwerû bi vî rengî diyar bikin:
function __construct($name,$color = "Black") {
$this->nick_name = $name;
$this->color = $color;
}
Di vê nimûneyê de, eger na giranî ji ber ku pîvana duyemîn tête peyda kirin dema ku tişt were afirandin, taybetmendiya "reng" bixweber dê bibe "Reş".
Di heman demê de girîng e ku meriv bala xwe bide ku heke pola zarok pola dêûbav dirêj bike û bixwaze bang çêkerê çîna dêûbavê di çêkera xwe de, ew dikare hevoksaziya "bav::__construct()" ji bo vê yekê bikar bîne. Ger çîna zarok çêkerê xwe tune be, çêkerê çîna dêûbav dê wekî fonksiyonek normal were mîras kirin, heya ku ew wekî taybet neyê ragihandin.
Di kurteya avaker û wêranker rêbazên taybetî ne ku ji bo destpêkirin û berdana çavkaniyên ji bo tiştên di PHP-ê de têne bikar anîn. Ew bixweber têne gazî kirin dema ku tiştek tê afirandin an hilweşandin û dikarin bêne bikar anîn da ku nirxên xwerû ji bo taybetmendiyên tiştan saz bikin an jî karên din bikin.
Q & A
Pirs: Di PHP de çêker çi ye?
A: Çêker fonksiyonek taybetî ye ku dema ku tiştek çînek çêbibe bixweber tê gazî kirin. Fonksiyona wê ya bingehîn ev e ku meriv taybetmendiyên objektê bide destpêkirin, wan li gorî nirxên xwerû an nirxên ku dema ku tişt tê afirandin wekî arguman têne danîn. Çêker bi bikaranîna hevoksaziya binî (__) ya ducarî ligel peyva "avakirin" têne destnîşan kirin, û divê navê rêbaza çêker "__construct" be.
Pirs: Di PHP-ê de çêkerek çawa tê ragihandin?
A: Avaker di PHP-ê de bi hevoksaziya dualî (__) û hevoka "avakirin" têne ragihandin. Divê "__construct" navê rêbaza çêker be.
Pirs: Armanca wêrankerek di PHP de çi ye?
A: Dema ku tiştek ji bîrê tê hilweşandin an jêbirin, rêbazek hilweşandî bixweber tê vexwendin. Fonksiyona wê ya bingehîn ew e ku çavkaniyên ku tişt bikar tîne azad bike, wek bidawîkirina girêdanên databasê an paqijkirina bîranînê.
Pirs: Di PHP de destruktorek çawa tê ragihandin?
A: Di PHP-ê de, wêranker bi karanîna hevoksaziya ducarî (__) digel peyva "hilweşandin" têne ragihandin. Navê rêbaza wêranker divê "__destruct" be.
Pirs: Ma em hewce ne ku di PHP-ê de bi destan gazî çêker û xerakeran bikin?
A: Na, çêker û wêranker dema ku tiştek çêdibe an jî tê hilweşandin bixweber têne gazî kirin û ne hewce ye ku em bi destan gazî wan bikin.
Pirs: Ma em dikarin ji bo parametreyên çêker di PHP de nirxên xwerû destnîşan bikin?
A: Erê, em dikarin PHP-ê bikar bînin ku ji bo argumanên çêker nirxên xwerû ava bikin. Mînakî, heke hûn dixwazin ku pîvana duyemîn a çêker vebijarkî be, hûn dikarin nirxek xwerû bi vî rengî diyar bikin:
function __construct($name, $color = "Black") {
$this->nick_name = $name;
$this->color = $color;
}
Pirs: Çînek zarok çawa dikare di PHP de gazî çêkerê pola dêûbav bike?
A: Ger çînek zarok çîna dêûbav dirêj bike û bixwaze çêkerê çîna dêûbav di çêkerê xwe de gazî bike, ew dikare hevoksaziya "bav::__construct()" ji bo vê yekê bikar bîne.
Exercises:
- Çînek bi navê "Car" bi taybetmendiyên "çêkirin", "model", û "sal" û çêkerek ku van nirxan destnîşan dike dema ku tiştek nû tê afirandin biafirînin.
- Rêbazek li çîna "Car" bi navê "getDetails" zêde bikin ku çêk, model û sala gerîdeyê wekî rêzek vedigerîne.
- Çînek zarokê bi navê "ElectricCar" biafirînin ku çîna "Car" dirêj dike û ji bo "batteryLife" taybetmendiyek zêde heye û çêkerek ku vê nirxê destnîşan dike.
- Rêbazek li pola "ElectricCar" bi navê "getBatteryLife" zêde bikin ku nirxa taybetmendiya "batteryLife" vedigerîne.
- Tiştek ji çîna "ElectricCar" biafirînin û rêbazên ku we afirandine bikar bînin da ku hûrgulî û jiyana bateriya gerîdeyê nîşan bidin.
Bersiv:
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();