Назад к вопросам
Junior — Middle
99
Имели ли вы опыт использования позднего статического связывания в своих проектах?
Ответ от нейросети
sobes.tech AI
Позднее статическое связывание (Late Static Binding, LSB) в PHP позволяет ссылаться на вызывающий класс в контексте статических методов и свойств, а не на класс, в котором метод был определён. Это полезно при наследовании, когда нужно, чтобы статические методы возвращали объекты или значения именно текущего класса, а не родительского.
Пример использования LSB:
class ParentClass {
public static function who() {
echo __CLASS__ . "\n";
}
public static function test() {
static::who(); // позднее статическое связывание
}
}
class ChildClass extends ParentClass {
public static function who() {
echo __CLASS__ . "\n";
}
}
ChildClass::test(); // Выведет "ChildClass", а не "ParentClass"
В своих проектах я использовал LSB для реализации паттернов, где важно, чтобы статические методы возвращали экземпляры текущего класса, особенно в фабричных методах и методах, возвращающих конфигурацию, что повышало гибкость и расширяемость кода.