Zum Inhalt springen

PHP OOP Basics: Late Static Binding

<?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.