Konstruktør ved arv i OOP i PHP
Ved arv kan man overstyre forelderens konstruktør. La oss se på et eksempel. La oss si at vi har følgende forelderklasse:
<?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;
}
}
?>
La oss si at følgende klasse arver fra forelderklassen:
<?php
class Student extends User {
}
?>
La oss si at vi i barnet-klassen vil utvide konstruktøren, ved å legge til flere parametere:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
I dette tilfellet er vi nødt til å
kalle forelderens konstruktør
på første linje via parent::__construct():
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Kommandoen parent::__construct() er i hovedsak
forelderens konstruktør. Derfor
sender vi de nødvendige parameterne til den:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Nå kan vi i barnet-klassen skrive studieåret inn i dens egen egenskap:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
La oss lage en getter for 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;
}
}
?>
La klassen Employee arve
fra klassen User fra denne
leksjonen.
Overstyr i klassen Employee
forelderens konstruktør, og legg til parametere
for alder og lønn.
Lag gettere for alder og lønn.