Klicanje preoblikovane metode v OOP v PHP
Pri preoblikovanju potomec izgubi
dostop do preoblikovane metode
starša. Kljub temu je dostop do nje
še vedno mogoč. To naredimo
s ključno besedo parent,
ki kaže na nadrejeni razred.
Poglejmo si primer, kdaj bomo morda potrebovali dostop do metode starša. Recimo, da imamo naslednji nadrejeni razred:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
Recimo, da smo v razredu-potomcu preoblikovali metodo starša:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'napaka imena študenta';
}
}
}
?>
Opazimo lahko, da se v preoblikovani metodi ob izpolnjevanju pogoja dejansko izvede koda metode starša. Izkoristimo nepotrebno podvajanje kode.
Lahko se ga znebimo, če pokličemo metodo starša. Naredimo to:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
parent::setName($name); // metoda starša
} else {
echo 'napaka imena študenta';
}
}
}
?>
Podana je naslednja koda:
<?php
class User {
private $age;
public function setAge($age) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'potrebna starost je večja od 0';
}
}
}
class Employee extends User {
public function setAge($age) {
if ($age <= 120) {
if ($age >= 0) {
$this->age = $age;
} else {
echo 'potrebna starost je večja od 0';
}
} else {
echo 'potrebna starost je manjša od 120';
}
}
}
?>
V razredu Employee popravite
poenostavite nastavljanje starosti z uporabo
izvirne metode starša.