Appel de fonctions de classe enfant à partir d'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 :
class whale { ... }
class fish extends whale { ... }
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.
abstract class whale {
function __construct() { ... }
function myfunc() { $this->test(); }
abstract function test();
}
Dans la classe baleine mise à jour, nous déclarons désormais myfunc() et test() comme méthodes abstraites. myfunc() appellera test(), qui doit être implémenté dans la classe enfant.
class fish extends whale {
function __construct() { parent::__construct(); }
function test() { echo "So you managed to call me !!"; }
}
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.
$fish = new fish();
$fish->test(); // Output: So you managed to call me !!
$fish->myfunc(); // Output: So you managed to call me !!
En utilisant des classes abstraites, nous appliquons un héritage approprié et garantissons 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3