PHP 実装クラスをパラメータとして渡す 2 つの方法

零到壹度
リリース: 2023-03-23 15:02:02
オリジナル
3408 人が閲覧しました

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 実装クラスをパラメータとして渡す 2 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート