PHP 구현 클래스를 매개변수로 전달하는 두 가지 방법

零到壹度
풀어 주다: 2023-03-23 15:02:02
원래의
3409명이 탐색했습니다.

PHP 프로젝트를 작업할 때 특정 클래스의 동일한 메서드 이름을 동적으로 사용해야 하는 경우가 종종 있습니다. 예를 들어 클래스 A에는 get 메서드가 있고 클래스 B에도 get 메서드가 있습니다. 이때 아주 풀기 쉬운 클래스는 딱 2개뿐인데, 만약 그런 클래스가 N개 있으면 어떻게 될까요? 그렇다면 나중에 이를 달성하기 위해 사용할 방법이 필요합니다!

솔루션

사실 저는 ThinkPHP 프레임워크를 보다가 이 트릭을 발견했습니다. 즉, PHP는 클래스를 이름이나 공간 이름으로 바꿀 수 있습니다. 클래스를 매개변수로 전달하는 기능을 구현하기 위해 공간 이름을 직접 전달합니다.

클래스 이름으로 클래스 바꾸기

<?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
로그인 후 복사

클래스 이름으로 클래스 바꾸기

//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;);
    }   
}
로그인 후 복사

최종 출력: testB

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿