Overriding на родителски методи во ООП во PHP
Класата-потомок може да го override-ира методот на родителот, со креирање на метод со исто име. Ајде да погледнеме на пример. Нека имаме следнава родителска класа:
<?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) {
}
}
?>
Вообичаено, override-ирање на методи на родителот е потребно за да се смени или дополни однесувањето на тој метод. Ајде во нашиот случај да додадеме проверка на должината на името:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Ајде да се увериме дека се повикува токму override-ираниот метод. Прво, ајде да креираме објект од класата-потомок:
<?php
$student = new Student;
?>
Сега ајде да го повикаме нашиот метод, пренесувајќи во него коректна вредност:
<?php
$student->setName('john');
?>
А сега ајде да го повикаме методот, пренесувајќи во него некоректна вредност. Како резултат ќе видиме фрлена исклучок:
<?php
$student->setName(''); // грешка
?>
Во класата User направете
гетер и сетер за возраста.
Во класата Employee override-ирајте
го сетерот за возраста и направете во него
проверка дали возраста е од
18 до 65 години.