⊗ppOpIhCOM 29 of 107 menu

Ylikirjoitetun metodin kutsuminen OOP:ssa PHP:ssä

Ylikirjoitettaessa jälkeläinen menettää pääsyn ylikirjoitettuun metodiin vanhemmassa. Kuitenkin siihen pääsy on edelleen mahdollista. Tämä tehdään käyttämällä avainsanaa parent, joka viittaa vanhemman luokkaan.

Katsotaanpa esimerkkiä, jolloin saatamme tarvita pääsyä vanhemman metodiin. Oletetaan, että meillä on seuraava vanhemman luokka:

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

Oletetaan, että jälkeläisluokassa ylikirjoitimme vanhemman metodin:

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

Voidaan huomata, että ylikirjoitetussa metodissa ehdon täyttyessä käytännössä suoritetaan vanhemman metodin koodi. Tuloksena on tarpeeton koodin kaksoiskappale.

Siitä voi päästä eroon, jos kutsutaan vanhemman metodia. Tehdäänpä niin:

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

Annettuna on seuraava koodi:

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

Luokassa Employee korjatkaa (yksinkertaistaka) ikäsetteri käyttämällä vanhemman alkuperäistä metodia.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää