Override dei metodi padre in OOP in PHP
Una classe figlia può sovrascrivere un metodo del padre, creando un metodo con lo stesso nome. Diamo un'occhiata a un esempio. Supponiamo di avere la seguente classe genitore:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Creiamo un metodo con lo stesso nome nella classe figlia:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
In genere, la sovrascrittura dei metodi del padre serve per modificare o integrare il comportamento di tale metodo. Nel nostro caso, aggiungiamo un controllo sulla lunghezza del nome:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
Assicuriamoci che venga chiamato proprio il metodo sovrascritto. Per prima cosa, creiamo un oggetto della classe figlia:
<?php
$student = new Student;
?>
Ora chiamiamo il nostro metodo, passandogli un valore corretto:
<?php
$student->setName('john');
?>
Ora chiamiamo il metodo, passandogli un valore non corretto. Come risultato, vedremo un'eccezione generata:
<?php
$student->setName(''); // errore
?>
Nella classe User create
un getter e un setter per l'età.
Nella classe Employee sovrascrivete
il setter dell'età e aggiungete un controllo
che verifichi che l'età sia compresa
tra 18 e 65 anni.