⊗ppOpIhCOM 29 of 107 menu

Извикване на предефиниран метод в ООП в PHP

При предефиниране потомкът губи достъп до предефинирания метод на родителя. Въпреки това, все пак може да се получи достъп до него. Това става с помощта на ключовата дума parent, която сочи към родителския клас.

Нека разгледаме пример, когато може да се наложи достъп до родителския метод. Да предположим, че имаме следния родителски клас:

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

Да предположим, че в класа-потомък сме предефинирали метода на родителя:

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

Може да се забележи, че в предефинирания метод при изпълнение на условието фактически се изпълнява кодът на родителския метод. Получава се ненужно дублиране на код.

Може да се отървем от него, ако извикаме метода на родителя. Нека направим това:

<?php class Student extends User { public function setName($name) { if (strlen($name) > 0) { parent::setName($name); // метод на родителя } else { echo 'student name error'; } } } ?>

Даден е следният код:

<?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'; } } } ?>

В класа Employee поправете опростете сетъра за възраст, като използвате оригиналния метод на родителя.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне