Aufruf einer überschriebenen Methode in OOP in PHP
Beim Überschreiben verliert das Kind
den Zugriff auf die überschriebene Methode
des Elternteils. Dennoch kann man
weiterhin darauf zugreifen. Dies geschieht
mit dem Schlüsselwort parent,
das auf die Elternklasse verweist.
Schauen wir uns ein Beispiel an, bei dem wir Zugriff auf die Elternmethode benötigen könnten. Angenommen, wir haben die folgende Elternklasse:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Angenommen, wir haben in der Kinderklasse die Methode des Elternteils überschrieben:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Man kann feststellen, dass im überschriebenen Methode bei Erfüllung der Bedingung praktisch der Code der Elternmethode ausgeführt wird. Es ergibt sich eine unnötige Code-Duplikation.
Man kann sie vermeiden, indem man die Methode des Elternteils aufruft. Tun wir das:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // Methode des Elternteils
} else {
echo 'student name error';
}
}
}
?>
Gegeben ist der folgende 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 der Klasse Employee korrigieren Sie
den Setter für das Alter, vereinfachen Sie ihn,
indem Sie die ursprüngliche Methode des Elternteils verwenden.