Ответ
Позднее статическое связывание (Late Static Binding) в PHP позволяет вызывать статические методы и свойства класса с учетом контекста выполнения, а не только объявления.
Ключевое слово static
используется вместо self
, чтобы обращаться к классу, который был вызван в рантайме, а не к тому, где метод объявлен.
Пример:
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" (а не "A" как было бы с self)
Используется для:
- Переопределения статических методов в наследниках
- Реализации паттернов типа Singleton с наследованием
- Гибкости при работе с иерархией классов