Overriding parent methods in OOP in PHP
Een subklasse kan een methode van de parent overschrijven door een methode met dezelfde naam aan te maken. Laten we een voorbeeld bekijken. Stel dat we de volgende parentklasse hebben:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Laten we in de subklasse een methode met dezelfde naam aanmaken:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
Over het algemeen is het overschrijven van methoden van de parent nodig om het gedrag van deze methode te wijzigen of aan te vullen. Laten we in ons geval een controle op de lengte van de naam toevoegen:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Laten we ervoor zorgen dat de overschreven methode wordt aangeroepen. Laten we eerst een object van de subklasse aanmaken:
<?php
$student = new Student;
?>
Laten we nu onze methode aanroepen, en er een correcte waarde aan doorgeven:
<?php
$student->setName('john');
?>
Laten we nu de methode aanroepen en er een incorrecte waarde aan doorgeven. Als resultaat zullen we de gegenereerde foutmelding zien:
<?php
$student->setName(''); // fout
?>
Maak in de klasse User een
getter en setter voor leeftijd.
Overschrijf in de klasse Employee
de setter voor leeftijd en voeg er een
controle in toe dat de leeftijd tussen
18 en 65 jaar ligt.