La question se pose : "Peut-on écraser une fonction en PHP en la redéclarant, comme dans cet exemple ?"
function ihatefooexamples(){ return "boo-foo!"; } if ($_GET['foolevel'] == 10){ function ihatefooexamples(){ return "really boo-foo"; } }
Bien que cette approche puisse sembler logique, elle n'entraîne pas réellement l'écrasement des fonctions en PHP. Il n'existe aucun moyen direct de redéfinir une fonction avec une implémentation différente.
Les capacités de programmation orientée objet de PHP offrent une solution alternative grâce au polymorphisme. En définissant une interface avec une signature de méthode commune et en implémentant plusieurs classes qui implémentent cette interface, vous pouvez modifier dynamiquement le comportement de la méthode en fonction de l'instance de la classe utilisée.
Considérez cet exemple :
interface Fooable { public function ihatefooexamples(); } class Foo implements Fooable { public function ihatefooexamples() { return "boo-foo!"; } } class FooBar implements Fooable { public function ihatefooexamples() { return "really boo-foo"; } } $foo = new Foo(); if (10 == $_GET['foolevel']) { $foo = new FooBar(); } echo $foo->ihatefooexamples();
Cette approche permet une manière plus dynamique et flexible de modifier le comportement de la fonction en fonction de l'instance d'objet lors de l'exécution.
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!