最初に例を見てください:
<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 チュートリアルに興味のある友人に役立つことを願っています。