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!
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.
<?php class A{ public function test(){ $class = 'B'; $b = (new $class); //必须要将类名放在变量里面,如果直接new 'B'会出错。 $b->test(); } }class B{ public function test(){ var_dump('class B'); } }$a = new A();$a->test();//最后将输出class B
//FileA<?php require 'testB.php';class A{ public function test(){ $class = 'testB\B'; $b = (new $class);//必须要将命名空间放在变量里面,如果直接new 'testB\B'会出错。 $b->test(); } }$a = new A();$a->test();
//FileB<?phpnamespace testB; //空间命名class B{ public function test(){ var_dump('testB\B'); } }
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!