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 구현 클래스를 매개변수로 전달하는 두 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!