⊗ppOpIhCOM 29 of 107 menu

Volání přepsané metody v OOP v PHP

Při přepisování ztrácí potomek přístup k přepsané metodě rodiče. Nicméně, přístup k ní lze stále získat. To se provádí pomocí klíčového slova parent, které odkazuje na rodičovskou třídu.

Podívejme se na příklad, kdy můžeme potřebovat přístup k rodičovské metodě. Předpokládejme, že máme následující třídu-rodiče:

<?php class User { private $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } ?>

Předpokládejme, že jsme v třídě-potomkovi přepsali metodu rodiče:

<?php class Student extends User { public function setName($name) { if (strlen($name) > 0) { $this->name = $name; } else { echo 'student name error'; } } } ?>

Lze si všimnout, že v přepsané metodě při splnění podmínky se fakticky provádí kód rodičovské metody. Vzniká tak zbytečné duplikování kódu.

Lze se toho zbavit, pokud zavoláme metodu rodiče. Udělejme to:

<?php class Student extends User { public function setName($name) { if (strlen($name) > 0) { parent::setName($name); // metoda rodiče } else { echo 'student name error'; } } } ?>

Je dán následující kód:

<?php class User { private $age; public function setAge($age) { if ($age >= 0) { $this->age = $age; } else { echo 'need age more 0'; } } } class Employee extends User { public function setAge($age) { if ($age <= 120) { if ($age >= 0) { $this->age = $age; } else { echo 'need age more 0'; } } else { echo 'need age less 120'; } } } ?>

Ve třídě Employee opravte zjednodušte setter věku, použijte originální metodu rodiče.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout