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