PHP да ООП да ўзгартирилган методни чақириш
Ўзгартириш жараёнида фарзанд
ўзгартирилган методга
кириш имкониятини йўқотади.
Аммо, унга киришни янада
амалга ошириш мумкин. Бу
parent калит сўзи орқали
бажарилади,
у ота-она синфини кўрсатади.
Келгила, бизга ота-она методига кириш қачон керак бўлиши мумкинлигини мисолда кўрамиз. Фарз қилайлик, бизда куйидаги ота-она синфи мавжуд:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Фарз қилайлик, биз фарзанд синфида ота-она методини ўзгартирдик:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Ўзгартирилган методда шарт бажарилганда аслода ота-она методининг коди ишлашини кузатиш мумкин. Натижада керксиз код такрорланиши юз беради.
Ундан ота-она методини чақириш орқали халос бўлиш мумкин. Келгила, буни бажарамиз:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // ота-она методи
} else {
echo 'student name error';
}
}
}
?>
Куйидаги код берилган:
<?php
class User {
private $age;
public function setAge($age) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'need age more 0';
}
}
}
class Employee extends User {
public function setAge($age) {
if ($age <= 120) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'need age more 0';
}
} else {
echo 'need age less 120';
}
}
}
?>
Employee синфида
ёш сеттерини соддалаштиринг,
ота-онанинг асл методидан фойдаланиб.