
Druckansicht von http://www.php-homepage.de/manual/language.oop5.late-static-bindings.php
Späte statische BindungBeginnend mit PHP 5.3.0 unterstützt PHP späte statische Bindung ("Late static binding"). Hiermit kann die aufgerufene Klasse im Kontext statischer Vererbung referenziert werden. Diese Funktionalität wurde in Hinblick auf die interne Perspektive als "späte statische Bindung" benannt. "Späte Bindung" bezieht sich auf die Tatsache, dass static:: nicht mehr über die Klasse, in der die aufgerufene Methode definiert ist, aufgelöst wird, stattdessen wird diese mit Hilfe von Laufzeitinformationen bestimmt. Die Benennung als "statische Bindung" beruht darauf, dass dieser Mechanismus unter anderem für statische Methodenaufrufe genutzt werden kann. Beschränkungen von self::Statische Referenzen auf die aktuelle Klasse wie self:: oder __CLASS__ werden mit Hilfe der Klasse, zu der die Methode gehört, also in welcher sie definiert ist, aufgelöst. Beispiel #1 Nutzung von self::
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: A Nutzung später statischer BindungSpäte statische Bindung versucht diese Beschränkung zu umgehen, indem ein neues Schlüsselwort eingeführt wird, dass die Klasse referenziert, die tatsächlich zur Laufzeit genutzt wurde, also im Wesentlichen ein Schlüsselwort, das es Ihnen gestattet im vorangegangenen Beispiel aus der aufgerufenen Methode test() die Klasse B zu referenzieren. Es wurde entschieden, kein neues Schlüsselwort einzuführen sondern statt dessen static zu verwenden, das bereits als reserviertes Schlüsselwort existierte. Beispiel #2 Einfache Nutzung von static::
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: B
Beispiel #3 Nutzung von static:: außerhalb eines statischen Kontexts
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: TestChild TestParent
SonderfälleEs gibt in PHP viele verschiedene Wege den Aufruf einer Methode auszulösen. Da bei später statischer Bindung die Auflösung von Aufrufen auf Laufzeitinformationen beruht, kann sie in speziellen Fällen zu unerwarteten Ergebnissen führen. Beispiel #5 Späte statische Bindung in 'magischen' Methoden
<?phpDas oben gezeigte Beispiel erzeugt folgende Ausgabe: B |