<?php class A { public static function who() { echo __CLASS__; } public static function staticShow() { //self::who(); will deliver A static::who(); //will deliver B } } class B extends A { public static function who() { echo __CLASS__; } } B::staticShow(); ?>
Zur Erklärung: Anhand von dem Beispiel wird die Beschränkung von self:: relativ klar. Obwohl wir B aufrufen, würde hier A geliefert werden, da die Methode von dieser Klasse vererbt wurde.
Das Schlüsselwort static geht hier weiter: Es wird der „letzte nicht weiterleitende Aufruf“ (d.h. kein statischer Aufruf, der durch ::parent, static oder forward_static_call() nach oben geht) verwendet. In unserem Fall ist das Klasse B.
Kommentare sind geschlossen, aber Trackbacks und Pingbacks sind möglich.