⊗ppOpIhCOM 29 of 107 menu

Chiamare un metodo sovrascritto in OOP in PHP

Durante la sovrascrittura, la classe figlia perde l'accesso al metodo sovrascritto della classe genitore. Tuttavia, è comunque possibile accedervi. Questo viene fatto utilizzando la parola chiave parent, che fa riferimento alla classe genitore.

Vediamo un esempio in cui potremmo aver bisogno dell'accesso al metodo della classe genitore. Supponiamo di avere la seguente classe genitore:

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

Supponiamo che nella classe figlia abbiamo sovrascritto il metodo della classe genitore:

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

Si può notare che nel metodo sovrascritto, quando la condizione è soddisfatta, viene essenzialmente eseguito il codice del metodo della classe genitore. Risulta in una duplicazione non necessaria del codice.

Possiamo eliminarla chiamando il metodo della classe genitore. Facciamolo:

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

È dato il seguente codice:

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

Nella classe Employee correggi semplifica il setter dell'età, utilizzando il metodo originale della classe genitore.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta