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 ;-)
OctoFirst
Voyez où votre équipe coince
Le projet sur lequel je bosse en ce moment. Vos pull requests en disent déjà long : où l'équipe se grippe, comment l'activité se répartit entre bugs, features et refacto. OctoFirst en fait des signaux clairs, sans reporting à faire à la main.
Y jeter un œil, c'est gratuit
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