Повикување на преоптоварениот метод во ООП во 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 поправете
и поедноставете го сетерот за возраста, користејќи го
оригиналниот метод на родителот.