OOP-də PHP-də override edilmiş metodun çağırılması
Override etdikdə nəsilin override edilmiş valideyn metoduna
çıxışı itir. Lakin buna çıxışı yenə də əldə etmək olar.
Bu, valideyn sinfinə işarə edən parent açar sözü
vasitəsilə edilir.
Gəlin nümunə ilə baxaq, nə vaxt valideyn metoduna çıxışımız ola bilər. Tutaq ki, bizdə aşağıdakı valideyn sinif var:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Tutaq ki, biz nəsil sinifdə valideyn metodunu override etdik:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Qeyd etmək olar ki, override edilmiş metodda şərt yerinə yetirildikdə faktiki olaraq valideyn metodunun kodu icra olunur. Nəticədə lazımsız kod təkrarı yaranır.
Bundan valideyn metodunu çağırmaqla xilas olmaq olar. Gəlin bunu edək:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // valideyn metodu
} else {
echo 'student name error';
}
}
}
?>
Aşağıdakı kod verilmişdir:
<?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 sinfində
yaş setterini düzəldin,
valideynin orijinal metodundan istifadə edərək
sadələşdirin.