Pouvez-vous écraser des fonctions en PHP ?

Barbara Streisand
Libérer: 2024-11-25 02:33:09
original
300 Les gens l'ont consulté

Can You Overwrite Functions in PHP?

Écrasement de fonctions en PHP

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";
  }
}
Copier après la connexion

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.

Approche alternative : polymorphisme

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();
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal