Sobes.tech
Back to questions
Junior — Middle
98

Имели ли вы опыт использования позднего статического связывания в своих проектах?

Answer from AI

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 для реализации паттернов, где важно, чтобы статические методы возвращали экземпляры текущего класса, особенно в фабричных методах и методах, возвращающих конфигурацию, что повышало гибкость и расширяемость кода.