Maison > développement back-end > tutoriel php > Deux méthodes pour passer les classes d'implémentation PHP en tant que paramètres

Deux méthodes pour passer les classes d'implémentation PHP en tant que paramètres

零到壹度
Libérer: 2023-03-23 15:02:02
original
3461 Les gens l'ont consulté

Lorsque vous travaillez sur des projets PHP, il est souvent nécessaire d'utiliser dynamiquement le même nom de méthode d'une certaine classe. Par exemple, la classe A a une méthode get et la classe B a également une méthode get. À l'heure actuelle, il n'y a que deux classes qui sont très faciles à résoudre. Cela peut être parfaitement résolu avec un if. Et s'il y avait N de telles classes ? Ensuite, il vous faut la méthode que j’utiliserai plus tard pour y parvenir !

Solution

En fait, je n'ai découvert cette astuce qu'en regardant le framework ThinkPHP, c'est-à-dire que PHP peut remplacer une classe par son nom ou son nom d'espace. Dans ce cas, vous pouvez transmettre directement le nom de la classe ou le nom de l'espace de la classe pour réaliser la fonction de transmission de la classe en tant que paramètre.

Remplacer la classe par le nom de la classe

<?php class A{
    public function test(){
        $class = &#39;B&#39;; 
        $b = (new $class); //必须要将类名放在变量里面,如果直接new &#39;B&#39;会出错。
        $b->test();
    }
}class B{
    public function test(){
        var_dump(&#39;class B&#39;);
    }
}$a = new A();$a->test();//最后将输出class B
Copier après la connexion

Remplacer la classe par le nom de l'espace

//FileA<?php require  &#39;testB.php&#39;;class A{
    public function test(){
        $class = &#39;testB\B&#39;; 
        $b = (new $class);//必须要将命名空间放在变量里面,如果直接new &#39;testB\B&#39;会出错。
        $b->test();
    }
}$a = new A();$a->test();
Copier après la connexion
//FileB<?phpnamespace testB; //空间命名class B{
    public function test(){
        var_dump(&#39;testB\B&#39;);
    }   
}
Copier après la connexion

Sortie finale : testB

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal