Oproepen van overschreven methode in OOP in PHP
Bij overschrijven verliest de child class
toegang tot de overschreven methode
van de ouder. Echter, het is toch mogelijk
om er toegang toe te krijgen. Dit wordt gedaan
met behulp van het sleutelwoord parent,
dat verwijst naar de parent class.
Laten we een voorbeeld bekijken wanneer we toegang nodig kunnen hebben tot de methode van de ouder. Stel dat we de volgende parent class hebben:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Stel dat we in de child class de methode van de ouder hebben overschreven:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Je kunt opmerken dat in de overschreven methode, wanneer aan de voorwaarde wordt voldaan, feitelijk de code van de methode van de ouder wordt uitgevoerd. Dit resulteert in onnodige code-duplicatie.
We kunnen dit elimineren door de methode van de ouder aan te roepen. Laten we dit doen:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // methode van de ouder
} else {
echo 'student name error';
}
}
}
?>
Gegeven de volgende code:
<?php
class User {
private $age;
public function setAge($age) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'need age more 0';
}
}
}
class Employee extends User {
public function setAge($age) {
if ($age <= 120) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'need age more 0';
}
} else {
echo 'need age less 120';
}
}
}
?>
In de class Employee, verbeter
en vereenvoudig de age setter door gebruik te maken van
de originele methode van de ouder.