Позднее статическое связывание

<?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();
?>

Ответ: A

<?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();
?>

Ответ: B

В нестатическом контексте вызванным классом будет тот, к которому относится экземпляр объекта. Поскольку $this→ будет пытаться вызывать закрытые методы из той же области действия, использование static:: может дать разные результаты. Другое отличие в том, что static:: может ссылаться только на статические поля класса.

Подробно: http://ru2.php.net/manual/ru/language.oop5.late-static-bindings.php