Что такое позднее статическое связывание в PHP

Ответ

Позднее статическое связывание (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 с наследованием
  • Гибкости при работе с иерархией классов