Назад к вопросам
Junior — Middle
89
Можете объяснить, что такое позднее статическое связывание в PHP и в чем его отличие от других видов связки?
Ответ от нейросети
sobes.tech 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 позволяет создавать более гибкие и расширяемые классы, где поведение зависит от класса-наследника, а не только от класса-родителя.