PHP プロジェクトで作業する場合、特定のクラスの同じメソッド名を動的に使用することが必要になることがよくあります。たとえば、クラス A には get メソッドがあり、クラス B にも get メソッドがあります。現時点では、非常に簡単に解けるクラスは 2 つだけです。このようなクラスが N 個ある場合はどうなるでしょうか。その場合、それを達成するために後で使用する方法が必要になります。
実際、私は ThinkPHP フレームワークを調べていたときに初めてこのトリックを発見しました。つまり、PHP はクラスを名前またはスペース名で置き換えることができます。クラスをパラメータとして渡す機能を実装するための空間ネーミング。
<?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'); } }
最終出力: testB
以上がPHP 実装クラスをパラメータとして渡す 2 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。