Overstyre foreldremetoder i OOP i PHP
En underklasse kan overstyre en foreldremetode ved å opprette en metode med samme navn. La oss se på et eksempel. 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 i underklassen opprette en metode med samme navn:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
Vanligvis er overstyring av metoder fra forelderen nødvendig for å endre eller supplere oppførselen til denne metoden. La oss i vårt tilfelle legge til en sjekk av navnelengden:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
La oss forsikre oss om at det er nettopp den overstyrte metoden som kalles. La oss først opprette et objekt av underklassen:
<?php
$student = new Student;
?>
La oss nå kalle metoden vår, og gi den en korrekt verdi:
<?php
$student->setName('john');
?>
Og la oss nå kalle metoden, og gi den en ukorrekt verdi. Som et resultat vil vi se en utløst unntak:
<?php
$student->setName(''); // feil
?>
I klassen User lag
getter og setter for alder.
I klassen Employee overstyr
alder-setteren og gjør en
sjekk på at alderen er fra
18 til 65 år.