Пераазначэнне метадаў бацькі ў ААП у PHP
Клас-нашчадак можа пераазначыць метад бацькі, стварыўшы метад з такім жа імем. Давайце паглядзім на прыкладзе. Хай у нас ёсць наступны бацькоўскі клас:
<?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) {
}
}
?>
Як правіла, пераазначэнне метадаў бацькі трэба для таго, каб змяніць ці дапоўніць паводзіны гэтага метаду. Давайце ў нашым выпадку дадамо праверку даўжыні імя:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Давайце пераканаемся ў тым, што выклікаецца менавіта пераазначаны метад. Для пачатку створым аб'ект класа нашчадка:
<?php
$student = new Student;
?>
Цяпер выклічам наш метад, перадаўшы ў яго карэктнае значэнне:
<?php
$student->setName('john');
?>
А цяпер выклічам метад, перадаўшы ў яго некарэктнае значэнне. У выніку ўбачым выкінутае выключэнне:
<?php
$student->setName(''); // памылка
?>
У класе User
зрабіце
гетэр і сетэр узросту.
У класе Employee
пераазначце
сетэр узросту і зрабіце ў ім
праверку на тое, што ўзрост ад
18
да 65
гадоў.