⊗ppOpIhCOM 29 of 107 menu

Pozivanje redefinisanih metoda u OOP u PHP-u

Prilikom redefinisanja, potomak gubi pristup redefinisanoj metodi roditelja. Međutim, i dalje mu je moguće pristupiti. Ovo se radi pomoću ključne reči parent, koja ukazuje na roditeljsku klasu.

Pogledajmo primer kada nam može zatrebati pristup metodu roditelja. Neka imamo sledeću klasu-roditelj:

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

Neka smo u klasi-potomku redefinisali metodu roditelja:

<?php class Student extends User { public function setName($name) { if (strlen($name) > 0) { $this->name = $name; } else { echo 'Greška u imenu studenta'; } } } ?>

Može se primetiti da u redefinisanoj metodi, prilikom ispunjenja uslova, faktički izvršava kod roditeljske metode. Ispada da imamo nepotrebno dupliranje koda.

Može se od njega osloboditi ako se pozove metod roditelja. Učinimo to:

<?php class Student extends User { public function setName($name) { if (strlen($name) > 0) { parent::setName($name); // metoda roditelja } else { echo 'Greška u imenu studenta'; } } } ?>

Dat je sledeći kod:

<?php class User { private $age; public function setAge($age) { if ($age >= 0) { $this->age = $age; } else { echo 'Potrebna starost veća od 0'; } } } class Employee extends User { public function setAge($age) { if ($age <= 120) { if ($age >= 0) { $this->age = $age; } else { echo 'Potrebna starost veća od 0'; } } else { echo 'Potrebna starost manja od 120'; } } } ?>

U klasi Employee ispravite pojednostavite setter za starost, koristeći originalni metod roditelja.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij