Sobes.tech
Junior — Middle

Können Sie erklären, was späte statische Bindung in PHP ist und wie sie sich von anderen Bindungsarten unterscheidet?

sobes.tech KI

Antwort von AI

Позднее статическое связывание (Late Static Binding, LSB) в PHP — это механизм, который позволяет внутри статических методов и свойств класса обращаться к вызывающему классу, а не к тому, где метод был определён.

Отличие от обычного статического связывания в том, что при обычном вызове через self:: всегда используется класс, в котором метод объявлен, а при позднем статическом связывании через static:: — класс, который фактически вызвал метод (runtime-класс).

Пример:

class A {
    public static function who() {
        echo __CLASS__;
    }
    public static function test() {
        self::who();    // всегда A
        static::who();  // позднее статическое связывание
    }
}

class B extends A {
    public static function who() {
        echo __CLASS__;
    }
}

B::test();
// Выведет:
// A (из self::who())
// B (из static::who())

Таким образом, LSB позволяет создавать более гибкие и расширяемые классы, где поведение зависит от класса-наследника, а не только от класса-родителя.