Kald af overskrevet metode i OOP i PHP
Ved overskrivning mister afkommet
adgang til den overskrevne metode
i forælderen. Det er dog stadig muligt
at få adgang til den. Dette gøres
ved hjælp af nøgleordet parent,
som peger på forælderklassen.
Lad os se på et eksempel, hvor vi måske har brug for adgang til forælderens metode. Lad os antage, at vi har følgende forælderklasse:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Lad os antage, at vi i afkomklassen har overskrevet forælderens metode:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Det kan bemærkes, at i den overskrevne metode, når betingelsen er opfyldt, udføres essentielt koden fra forælderens metode. Dette resulterer i unødvendig kodeduplikering.
Vi kan undgå dette ved at kalde forælderens metode. Lad os gøre dette:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // forælderens metode
} else {
echo 'student name error';
}
}
}
?>
Følgende kode er givet:
<?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';
}
}
}
?>
I klassen Employee skal du rette
og forenkle setteren for alder ved at bruge
forælderens oprindelige metode.