Costruttore nell'ereditarietà in OOP in PHP
Nell'ereditarietà è possibile sovrascrivere il costruttore del genitore. Vediamo con un esempio. Supponiamo di avere la seguente classe genitore:
<?php
class User {
private $name;
private $surn;
public function __construct($name, $surn) {
$this->name = $name;
$this->surn = $surn;
}
public function getName() {
return $this->name;
}
public function getSurn() {
return $this->surn;
}
}
?>
Supponiamo che dalla classe genitore erediti la seguente classe:
<?php
class Student extends User {
}
?>
Supponiamo di voler estendere il costruttore nella classe figlia, aggiungendovi parametri aggiuntivi:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
In questo caso dobbiamo obbligatoriamente
richiamare come prima riga il costruttore
del genitore tramite parent::__construct():
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Il comando parent::__construct() è in sostanza
il costruttore del genitore. Pertanto
passiamogli i parametri richiesti:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Ora nel figlio l'anno di corso scriviamolo nella sua proprietà del figlio:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Creiamo un getter per l'anno di corso:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
public function getYear() {
return $this->year;
}
}
?>
Supponiamo che la classe Employee erediti
dalla classe User di questa
lezione.
Sovrascrivi nella classe Employee
il costruttore del genitore, aggiungendovi
un parametro con l'età e lo stipendio.
Crea i getter per l'età e lo stipendio.