Suprascrierea metodelor părinților în OOP în PHP
O clasă copil poate suprascrie metoda părintelui, creând o metodă cu același nume. Să ne uităm la un exemplu. Să presupunem că avem următoarea clasă părinte:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Să creăm în clasa copil o metodă cu același nume:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
De obicei, suprascrierea metodelor părintelui este necesară pentru a modifica sau completa comportamentul acestei metode. În cazul nostru, să adăugăm o verificare a lungimii numelui:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Să ne asigurăm că este apelată exact metoda suprascrisă. Pentru început, să creăm un obiect al clasei copil:
<?php
$student = new Student;
?>
Acum să apelăm metoda noastră, transmițându-i o valoare corectă:
<?php
$student->setName('john');
?>
Și acum să apelăm metoda, transmitându-i o valoare incorectă. Ca rezultat, vom vedea excepția aruncată:
<?php
$student->setName(''); // eroare
?>
În clasa User faceți
un getter și un setter pentru vârstă.
În clasa Employee suprascrieți
setter-ul vârstei și faceți în el
o verificare că vârsta este de la
18 până la 65 ani.