ホームページ  >  記事  >  バックエンド開発  >  PHP の遅延バインディング

PHP の遅延バインディング

WBOY
WBOYオリジナル
2016-07-29 09:10:451205ブラウズ

最初に例を見てください:

<code><?php
    class A {
        public static function who() {
            echo __CLASS__;
        }
        public static function test() {
            self::who();
        }
    }
    
    class B extends A {
        public static function who() {
            echo __CLASS__;
        }
    }
    
    B::test();
?></code>

出力:

<code>A
</code>

遅延バインディングを使用する場合:

<code><?php
    class A {
        public static function who() {
            echo __CLASS__;
        }
        public static function test() {
            static::who(); // 后期静态绑定从这里开始
        }
    }
    
    class B extends A {
        public static function who() {
            echo __CLASS__;
        }
    }
    
    B::test();
?></code>

出力:

<code>B
</code>

のクラスに応じて、self:: または CLASS を使用して、現在のクラスへの静的参照を作成します。呼び出し元のクラスではなく、現在のメソッドが定義されています。

「遅延バインディング」とは、static:: が現在のメソッドが定義されているクラスに解決されなくなり、実際の実行時に計算されることを意味します。 静的メソッドの呼び出しに使用できる(ただしそれに限定されない)ため、「静的バインディング」とも呼ばれます。

上記では静的メソッドを含む PHP の遅延バインディングを紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:nginx rewrite次の記事:PHP学习-1