Konstruktors mantojumā OOP PHP
Mantojot var pārrakstīt vecāka konstruktoru. Apskatīsim piemērā. Pieņemsim, ka mums ir šāds vecāka klase:
<?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;
}
}
?>
Pieņemsim, ka no vecāka klases manto šāda klase:
<?php
class Student extends User {
}
?>
Pieņemsim, ka mēs gribam bērna klasē paplašināt konstruktoru, pievienojot tam papildu parametrus:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
Šajā gadījumā mums obligāti jāizsauc
vecāka konstruktors, izmantojot
parent::__construct() kā pirmo rindu:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Komanda parent::__construct() būtībā ir
vecāka konstruktors. Tāpēc
padodam tajā nepieciešamos parametrus:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
Tagad bērna klasē mācību gadu ierakstām bērna paša īpašumā:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
Izveidosim getteri mācību gadam:
<?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;
}
}
?>
Pieņemsim, ka klase Employee manto
no klases User no šīs
nodarbības.
Pārrakstiet klasē Employee
vecāka konstruktoru, pievienojot tam
parametru ar vecumu un algu.
Izveidojiet getterus vecumam un algai.