Konstruktor prilikom nasleđivanja u OOP u PHP-u
Prilikom nasleđivanja možete redefinisati konstruktor roditelja. Pogledajmo na primeru. Pretpostavimo da imamo sledeću roditeljsku klasu:
<?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;
}
}
?>
Pretpostavimo da od roditeljske klase nasleđuje sledeća klasa:
<?php
class Student extends User {
}
?>
Pretpostavimo da u klasi-potomku želimo da proširimo konstruktor, dodajući dodatne parametre:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
U ovom slučaju moramo obavezno
prvom linijom pozvati konstruktor
roditelja pomoću parent::__construct():
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Komanda parent::__construct() u suštini je
konstruktor roditelja. Stoga,
prosledimo mu tražene parametre:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Sada u potomku godinu studija upisaćemo u svoje svojstvo potomka:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Napravimo getter za godinu studija:
<?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;
}
}
?>
Pretpostavimo da klasa Employee nasleđuje
od klase User iz ove
lekcije.
Redefinišite u klasi Employee
konstruktor roditelja, dodajući u njega
parametar za godine i platu.
Napravite gettere za godine i platu.