Итак, в Silex я пытаюсь получить параметр $app из своих действий контроллера и просто передать зависимости, относящиеся к контроллеру/действию.
Обычно мои контроллеры имеют следующие общие зависимости:
- Механизм шаблонов
- Провайдер сеанса
- Поставщик услуг перевода
- Генератор URL
- Поставщик проверки
У меня есть базовый класс контроллера, который по умолчанию принимает их в конструкторе. Контроллеры, унаследованные от него, также получают эти параметры. Кроме того, они принимают другие параметры, такие как репозиторий/хранилище объектов (например, пользовательский репозиторий в аутентификации или пользовательском контроллере).
В итоге я регистрирую контроллеры в Silex с минимум 5 параметрами для конструктора, когда кажется, что я не вижу многого из этого в других приложениях. Такое ощущение, что я делаю это неправильно.
Я также понимаю, что жалуюсь на то же самое, что и контейнер Pimple DI «исправляет», но его использование также кажется не совсем верным для философии DI.
Мой вопрос: есть ли лучший способ сделать то, что я делаю?