Överskridande av föräldrametoder i OOP i PHP
En underklass kan åsidosätta en föräldermetod genom att skapa en metod med samma namn. Låt oss titta på ett exempel. Låt oss säga att vi har följande förälderklass:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Låt oss i underklassen skapa en metod med samma namn:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
Vanligtvis behöver man åsidosätta metoder från föräldern för att ändra eller komplettera beteendet hos den metoden. Låt oss i vårt fall lägga till en kontroll av namnets längd:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Låt oss försäkra oss om att det är just den åsidosatta metoden som anropas. Låt oss först skapa ett objekt av underklassen:
<?php
$student = new Student;
?>
Låt oss nu anropa vår metod, och skicka med ett korrekt värde:
<?php
$student->setName('john');
?>
Låt oss nu anropa metoden och skicka ett inkorrekt värde. Som ett resultat kommer vi att se ett utskrivet felmeddelande:
<?php
$student->setName(''); // fel
?>
I klassen User, skapa
en getter och setter för ålder.
I klassen Employee, åsidosätt
settern för ålder och gör en
kontroll där som säkerställer att åldern är mellan
18 och 65 år.