Preklapanje metoda roditelja u OOP u PHP
Klasa dete može da preklopi metod roditelja, kreirajući metod sa istim imenom. Pogledajmo primer. Neka imamo sledeću roditeljsku klasu:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Hajde da u klasi detetu kreiramo metod sa istim imenom:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
U pravilu, preklapanje metoda roditelja je potrebno da bi se promenilo ili dopunilo ponašanje tog metoda. Hajde da u našem slučaju dodamo proveru dužine imena:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Uverimo se da se poziva baš preklopljeni metod. Za početak kreirajmo objekat klase deteta:
<?php
$student = new Student;
?>
Sada pozovimo naš metod, prosledivši u njega korektnu vrednost:
<?php
$student->setName('john');
?>
A sada pozovimo metod, prosledivši u njega nekorektnu vrednost. Kao rezultat videćemo izbačeni izuzetak:
<?php
$student->setName(''); // greška
?>
U klasi User napravite
geter i seter za godine.
U klasi Employee preklonite
seter za godine i napravite u njemu
proveru da li su godine između
18 i 65 godina.