Rishkrimi i metodave të prindit në OOP në PHP
Një klasë e trashëguar mund të rishkruajë metodën e prindit, duke krijuar një metodë me të njëjtin emër. Le të shohim në një shembull. Le të themi se kemi këtë klasë prind:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Le të krijojmë në klasën e trashëguar një metodë me të njëjtin emër:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
Në përgjithësi, rishkrimi i metodave të prindit nevojitet për të ndryshuar ose plotësuar sjelljen e atij metode. Le të shtojmë në rastin tonë një kontroll të gjatësisë së emrit:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'gabim në emrin e studentit';
}
}
}
?>
Le të sigurohemi që po thirret pikërisht metoda e rishkruar. Së pari le të krijojmë një objekt të klasës së trashëguar:
<?php
$student = new Student;
?>
Tani le ta thërrasim metodën tonë, duke i kaluar asaj një vlerë korrekte:
<?php
$student->setName('john');
?>
Dhe tani le ta thërrasim metodën, duke i kaluar asaj një vlerë të pasaktë. Si rezultat do të shohim një përjashtim të hedhur:
<?php
$student->setName(''); // gabim
?>
Në klasën User bëni
getter dhe setter për moshën.
Në klasën Employee rishkruani
setter për moshën dhe bëni në të
kontrollin që mosha të jetë nga
18 deri në 65 vjet.