Å kalle en overstyrt metode i OOP i PHP
Ved overstyring mister barneklassen
tilgang til den overstyrte metoden
i foreldreklassen. Likevel er det
mulig å få tilgang til den. Dette gjøres
ved hjelp av nøkkelordet parent,
som peker på foreldreklassen.
La oss se på et eksempel når vi kan trenge tilgang til en foreldremetode. La oss si at vi har følgende foreldreklasse:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
La oss si at vi i barneklassen har overstyrt foreldremetoden:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Man kan legge merke til at i den overstyrte metoden, når betingelsen er oppfylt, blir koden fra foreldremetoden faktisk utført. Dette resulterer i unødvendig kodeduplisering.
Vi kan unngå dette ved å kalle foreldremetoden. La oss gjøre det:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // foreldremetoden
} else {
echo 'student name error';
}
}
}
?>
Følgende kode er gitt:
<?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
forenkle setteren for alder ved å bruke
den originale metoden fra foreldreklassen.