Junior — Middle
Puteți explica ce este legarea statică târzie în PHP și în ce se deosebește de alte tipuri de legare?
sobes.tech AI
Răspuns de la 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 позволяет создавать более гибкие и расширяемые классы, где поведение зависит от класса-наследника, а не только от класса-родителя.