⊗ppOpIhCOM 29 of 107 menu

Volanie prepísanej metódy v OOP v PHP

Pri prepisovaní stráca potomok prístup k prepísanej metóde rodiča. Avšak, získať k nej prístup sa napriek tomu dá. Robí sa to pomocou kľúčového slova parent, ktoré ukazuje na rodičovskú triedu.

Pozrime sa na príklad, kedy nám môže byť potrebný prístup k rodičovskej metóde. Predpokladajme, že máme nasledujúcu triedu-rodiča:

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

Predpokladajme, že sme v triede-potomkovi prepísali metódu rodiča:

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

Možno si všimnúť, že v prepísanej metóde pri splnení podmienky sa v podstate vykonáva kód rodičovskej metódy. Vzniká tak zbytočné duplikovanie kódu.

Je sa ho možné zbaviť, ak zavoláme metódu rodiča. Urobme to:

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

Daný je nasledujúci 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'; } } } ?>

V triede Employee opravte zjednodušte setter veku, použite originálnu metódu rodiča.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť