через конструктор, ни через сеттер. Делается привязка интерфейса к реализации, а потом в сервисах тупо дергается что-то типа $container->get('AnimalInterface').
Меня посещает мысль, что это очень кривое внедрение зависимостей и что лучше внедрять через конструктор. Но четкие аргументы почему это плохо довольно сложно сформулировать. Максимум это то, что методы сервиса не знают откуда берется зависимость. Что думаете по этому поводу?
Тут нет di если ты юзаешь контейнер напрямую
если ты передаёшь контейнер в конструктор - у тебя теоретически появляется зависимость от всего, что есть в контейнере, потому-что ты можешь что угодно вызвать в реализации. Если у тебя будут более конкретные зависимости - будет, например, проще увидеть, что "что-то тут уже больно много зависимостей, может быть что-то пошло не так?"
1) плохое решение потому, что быстро понять о каких классов зависит класс 2) сложнее тестировать, тк мокать придется весь контейнер 3) сложнее рефакторить если потребуется
Обсуждают сегодня