06/06/2011

Objet : accéder au grand parent en PHP

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 ;-)

Pochette du livre Qualité logicielle pour les développeurs

Si ce blog vous plaît, vous trouverez de nombreux conseils pratiques dans mon livre. C'est une bonne manière de me soutenir et de m'encourager

Qualité logicielle pour les développeurs

Le livre qui vous aide à améliorer la qualité de vos projets.

  • ✅ Comment mettre en place des tests automatisés pérennes ;
  • ✅ Comment analyser la qualité de votre code ;
  • ✅ Faites adhérer votre équipe à la qualité logicielle.
blog comments powered by Disqus

© Jean-François Lépine, 2013 - 2024