Zwei Methoden zur Übergabe von PHP-Implementierungsklassen als Parameter

零到壹度
Freigeben: 2023-03-23 15:02:02
Original
3409 Leute haben es durchsucht

Bei der Arbeit an PHP-Projekten ist es oft notwendig, dynamisch denselben Methodennamen einer bestimmten Klasse zu verwenden. Beispielsweise verfügt Klasse A über eine get-Methode und Klasse B verfügt ebenfalls über eine get-Methode. Derzeit gibt es nur zwei Klassen, die sehr einfach zu lösen sind. Was wäre, wenn es N solcher Klassen gäbe? Dann brauchen Sie die Methode, die ich später verwenden werde, um dies zu erreichen!

Lösung

Eigentlich habe ich diesen Trick erst entdeckt, als ich mir das ThinkPHP-Framework angesehen habe. Das heißt, PHP kann darin eine Klasse durch ihren Namen oder ihren Space-Namen ersetzen In diesem Fall können Sie den Klassennamen oder den Raumnamen der Klasse direkt übergeben, um die Funktion der Übergabe der Klasse als Parameter zu realisieren.

Klasse durch Klassennamen ersetzen

<?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
Nach dem Login kopieren

Klasse durch Raumnamen ersetzen

//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();
Nach dem Login kopieren
//FileB<?phpnamespace testB; //空间命名class B{
    public function test(){
        var_dump(&#39;testB\B&#39;);
    }   
}
Nach dem Login kopieren

Endgültige Ausgabe: testB

Das obige ist der detaillierte Inhalt vonZwei Methoden zur Übergabe von PHP-Implementierungsklassen als Parameter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage