Appel de fonctions de classe enfant depuis une classe parent
En PHP, il est possible d'appeler une fonction depuis une classe enfant au sein d'une classe parent, mais cela nécessite une planification minutieuse.
Considérez l'exemple de code suivant :
<code class="php">class whale { ... } class fish extends whale { ... }</code>
Dans cet exemple, nous avons une classe baleine et une classe poisson qui en hérite. Le but est d'appeler la fonction test() de la classe fish au sein de la fonction myfunc() de la classe baleine.
Solution : utiliser des classes abstraites
Pour y parvenir cela, nous pouvons exploiter les classes abstraites. Une classe abstraite impose l'implémentation de certaines méthodes dans ses classes enfants.
<code class="php">abstract class whale { function __construct() { ... } function myfunc() { $this->test(); } abstract function test(); }</code>
Dans la classe baleine mise à jour, nous déclarons maintenant myfunc() et test() comme méthodes abstraites. myfunc() appellera test(), qui doit être implémenté dans la classe enfant.
<code class="php">class fish extends whale { function __construct() { parent::__construct(); } function test() { echo "So you managed to call me !!"; } }</code>
Dans la classe fish, nous fournissons une implémentation pour test(). Cela garantit que les exigences abstraites de la classe parent sont remplies.
Avec cette configuration, nous pouvons maintenant appeler la fonction test() depuis fish dans myfunc() de la classe baleine.
<code class="php">$fish = new fish(); $fish->test(); // Output: So you managed to call me !! $fish->myfunc(); // Output: So you managed to call me !!</code>
En utilisant des classes abstraites, nous appliquons un héritage approprié et veillons à ce que les classes enfants implémentent les méthodes requises. Cela nous permet d'appeler de manière transparente les fonctions de classe enfant à partir des classes parent.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!