⊗ppOpIhCOM 29 of 107 menu

Appel d'une méthode surchargée en POO en PHP

Lors de la surcharge, l'enfant perd l'accès à la méthode surchargée du parent. Cependant, il est possible d'y accéder malgré tout. Cela se fait à l'aide du mot-clé parent, qui fait référence à la classe parente.

Regardons un exemple où nous pourrions avoir besoin d'accéder à la méthode parente. Supposons que nous ayons la classe parente suivante :

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

Supposons que nous ayons surchargé la méthode du parent dans la classe enfant :

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

On peut remarquer que dans la méthode surchargée, lorsque la condition est remplie, le code exécuté est essentiellement celui de la méthode parente. Il en résulte une duplication de code inutile.

On peut l'éviter en appelant la méthode du parent. Faisons cela :

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

Voici le code suivant :

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

Dans la classe Employee, corrigez et simplifiez le setter de l'âge en utilisant la méthode originale du parent.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser