Sehen wir uns zunächst ein Beispiel an:
<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>
Ausgabe:
<code>A </code>
Wenn späte Bindung verwendet wird:
<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>
Ausgabe:
<code>B </code>
Die Verwendung von self:: oder CLASS zur statischen Referenzierung der aktuellen Klasse hängt von der Klasse ab, in der die aktuelle Methode definiert ist, nicht von der Klasse des Aufrufers.
„Late binding“ bedeutet, dass static:: nicht mehr in die Klasse aufgelöst wird, in der die aktuelle Methode definiert ist, sondern zur tatsächlichen Laufzeit berechnet wird. Es kann auch als „statische Bindung“ bezeichnet werden, da es für Aufrufe von statischen Methoden verwendet werden kann (aber nicht darauf beschränkt ist).
Das Obige hat die späte Bindung in PHP eingeführt, einschließlich statischer Methoden. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.