Выклік пераазначанага метаду ў ААП у 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
выпраўце
спрасціце сетэр узросту, выкарыстаўшы
арыгінальны метад бацькі.