Perrašyto metodo iškvietimas OOP PHP
Perrašant metodą, palikuonis praranda
prieigą prie perrašyto tėvinio metodo.
Tačiau, vis tiek galima gauti prieigą prie jo.
Tai daroma naudojant raktinį žodį parent,
kuris nurodo į tėvinę klasę.
Pažiūrėkime pavyzdžiu, kada mums gali prireikti prieigos prie tėvinio metodo. Tarkime, kad turime tokią tėvinę klasę:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Tarkime, kad palikuonio klasėje perrašėme tėvinį metodą:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Galima pastebėti, kad perrašytame metode, tenkinant sąlygą, faktiškai vykdomas tėvinio metodo kodas. Pasirodo, nereikalingas kodo dubuliavimas.
Galima nuo jo atsikratyti, jei iškviestume tėvinį metodą. Padarykime tai:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // tėvinis metodas
} else {
echo 'student name error';
}
}
}
?>
Duotas toks kodas:
<?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';
}
}
}
?>
Klasėje Employee pataisykite
supaprastinkite amžiaus seterį, panaudodami
originalų tėvinį metodą.