В Symfony, начиная с версии 4.2 был добавлен autowiring через аннотацию @ required. Описываем любой публичный не статический метод, ставим над ним @ required, передаём ему аргументы, для типов которых есть сервисы - вуаля.
Но, через боль и слёзы узнал ещё одну вещь: autowiring в родительском классе в Symfony отработает только в том случае, если дочерний класс так же был интегрирован через autowiring. Аннотация @ required позволяет не инициализировать переменные через конструктор, что неочевидно может привести к такой ошибке: где-то создаём объект через new class(), конструктор не ругается (ведь зависимые классы подтягиваются через другой метод). И тут-то возникают ошибки. С одной стороны - это очевидно, так как обычная инициализация не включает никакие механизмы Symfony, упрощающие жизнь. С другой - я попался, теперь буду знать :)
Post #139
1.59K