Внедрение зависимостей в Slim Framework - передача контейнера в ваши собственные классы

Я уже прокомментировал эту ветку, но она кажется мертвой, поэтому я открываю новую:Dependency Injection Slim Framework 3

Пост выше объясняет, как передать Slims Container в класс, который вы написали сами.

Тем не менее, OP спросил, возможно ли получить Slim для Dependency InjectВСЕ их классы.

Мне также интересно узнать, есть ли способ сделать это, так как кажется, что ничего, кроме СУХОГО, если вам нужно передать контейнеркаждый класс, который вы хотите использовать.

Например, если я хочу использовать одну из функций Slim (например, сделать перенаправление,в одном из моих собственных классовЯ не могу использовать это в соответствии с документацией:

$res->withStatus(302)->withHeader('Location', 'your-new-uri');

Так как$res (объект ответа) не входит в сферу моего класса, если я не введу / не передам его.

Проблема в том, что если я скажу 100 классов, я должен пройти (или ввести) контейнер 100 раз? Это кажется очень, очень утомительным.

В таких средах, как CakePHP, вы можете использовать AppController, чтобы глобально делать подобные вещи, то есть определять вещи один раз и делать их доступными во ВСЕХ ваших классах. Разве Slim не обеспечивает эту функциональность? Если нет, то это серьезный недостаток, ИМО.

Изменить - я добавляю это из одного из комментариев, которые я сделал, чтобы попытаться объяснить проблему дальше:

Если вы посмотрите на первый учебник приложений -http://slimframework.com/docs/tutorial/first-app.html - они добавляют соединение с базой данных PDO в контейнер.

Допустим, у меня есть 100 отдельных классов в подкаталоге (в примере есть каталог ../classes/), и я автоматически загружаю их в index.php, используяspl_autoload_register(), Контейнер НЕ доступен ни в одном из этих классов.

Если бы мне приходилось передавать что-то 100 раз, каждый раз, когда я использую один из моих классов, просто чтобы получить соединение с PDO (и это только один пример), то это делает код очень повторяющимся, то есть не СУХИМЫМ.

Ответы на вопрос(2)

Ваш ответ на вопрос