Я использую концепцию DI в течение некоторого времени, но теперь я начинаю использовать контейнер для инъекций зависимостей (DIC). Хотя для меня это не ясно.Как сохранить экземпляр контейнера для инъекций зависимостей (PHP)
В моей DIC я сохраняю (например) объект Config и объект Request. Я понимаю, что эти объекты в области запроса (тот же самый экземпляр используется каждый раз, когда вы запрашиваете его из этого контейнера) остаются теми же. Но это происходит только тогда, когда я повторно использую один и тот же экземпляр DIC.
Как пропустить DIC вокруг моих классов? Скажите, что я хочу использовать его в своем классе Router, мне нужно передать его в конструкторе класса Router? Но класс Router создается в другом классе, и этот должен также иметь этот объект DIC.
Или я должен создать синглтон этой DIC?
Лучший способ создать DIC в бутстрапе моего приложения и передать его туда, где это необходимо? Похоже на хороший подход, но мне действительно нужно приложить дополнительные усилия. (Мои классы также будут очень проверяемыми) – jayv
Для контейнера, который используется через все приложение, которое может быть довольно хорошей идеей. Он эффективно инкапсулирует ресурсы/объекты, которые в противном случае должны были бы отображаться как глобальные переменные или синглтоны. Помните, что вы также можете иметь локальные контейнеры DI с ограниченным объемом использования. Они должны быть созданы в объеме, в котором они требуются. – Mchl
Можете ли вы дать мне короткий практический пример использования ограниченного объема? – jayv