Heim  >  Artikel  >  Backend-Entwicklung  >  Zwei Methoden zur Übergabe von PHP-Implementierungsklassen als Parameter

Zwei Methoden zur Übergabe von PHP-Implementierungsklassen als Parameter

零到壹度
零到壹度Original
2018-04-11 10:44:003292Durchsuche

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

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

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!

Stellungnahme:
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