Больше всего в этом вопросе поражает "Сложность: средний".
Действительно, сложно жить в современном мире, не зная такого достижения цивилизации, как Гугл
Arris, случай с моделью попадает под тот алгоритм, который я описал выше.
Если контроллер работает с моделью, значит она должна быть в его зависимостях. И внедряться контейнером через конструктор.
Соответственно, контейнер знает, что данному контроллеру нужна модель, и он, либо создав, либо использовав уже созданный инстенс, внедряет модель через конструктор контроллера.
Соответственно, контейнер знает, что данной модели нужно соединение с БД, и он, либо создав, либо использовав уже созданный инстенс, внедряет соединение через конструктор модели.
А где происходит соединение - нам, по большому счету, неважно. Главное, чтобы это не происходило "прямо сейчас, в модели" - это будет действительно треш.
Arris, на самом деле всё просто.
Контейнер можно точно так же абьюзить, как и глобалс и синглетон.
Стремиться надо к тому, чтобы контейнер никогда не вызывался явно.
А только использовался для создания экземпляров классов, контроллеров например.
А все остальные зависимости должны попадать в класс уже явным порядком, через параметры конструктора
Дмитрий, слушай, ну я могу понять, ты по-английски ни бумбум, что в ошибке написано не въезжаешь. Но погуглить-то можно хотя бы? Чтобы такой бред не писать?
Это про проверку.
Сотрите уже, не позорьтесь