Konstruktor vid arv i OOP i PHP
Vid arv är det möjligt att åsidosätta förälderns konstruktor. Låt oss titta på ett exempel. Antag att vi har följande förälderklass:
<?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;
}
}
?>
Antag att följande klass ärver från förälderklassen:
<?php
class Student extends User {
}
?>
Antag att vi vill utöka konstruktorn i barnklassen genom att lägga till ytterligare parametrar:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
I det här fallet måste vi
på första raden anropa förälderns
konstruktor via parent::__construct():
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Kommandot parent::__construct() är i princip
förälderns konstruktor. Därför
skickar vi in de nödvändiga parametrarna:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Nu i barnklassen skriver vi studieåret till barnets egen egenskap:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Låt oss skapa en getter för studieåret:
<?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;
}
}
?>
Antag att klassen Employee ärver
från klassen User från denna
lektion.
Åsidosätt i klassen Employee
förälderns konstruktor genom att lägga till
parametrar för ålder och lön.
Skapa getters för ålder och lön.