S'il est courant de surcharger une méthode parente en PHP, il est plus rare d'accéder directement à la classe "grand -mère" sans passer par la mère. Pourtant... c'est possible, et voici comment :-)
En effet, un héritage de PHP 4 permet préserver le contexte d'exécution de la classe fille quand on appelle une classe parente en utilisant son nom plutôt que l'opérateur "parent" (qui n'existait pas avant). Un exemple tout simple :
class GrandMother {
protected $_myVar = '5';
public function doSomething() {
echo "GrandMother, value is " . $this->_myVar;
}
}
class Mother extends GrandMother {
public function doSomething() {
echo 'Mother, value is '; // Never called
}
}La classe fille n'utilise pas "parent", mais directement le nom de la classe grand-mère :
class Child extends Mother {
public function doSomething() {
$this->_myVar = '20';
return GrandMother::doSomething();
}
}Il ne reste plus qu'à tester :
$oObject = new Child;
$oObject->doSomething();
// affiche "GrandMother, value is 20"A utiliser avec précaution et modération ;-)
Soutenir mon travail
Sponsoring open-source
PHPMetrics, AST Metrics et le reste sont librement accessibles. Un petit coup de pouce sur GitHub aide à les faire vivre.
Me sponsoriser sur GitHub
Audit & Formation
Disponible sur Malt
Besoin d'un regard extérieur sur votre code ? J'accompagne les équipes PHP sur l'architecture, les tests et l'industrialisation, au rythme de vos projets.
Me trouver sur Malt© Jean-François Lépine, 2010 - 2026 · Flux RSS