Я не думаю, что структура внедрения зависимостей действительно будет работать на PHP из-за структуры объектно-ориентированных программ. Прежде всего, это не похоже на C # или Java, где двоичные файлы уже существуют, и вам просто нужно найти способ создать экземпляр этого объекта и внедрить его в другой. PHP должен загрузить файлы классов и интерпретировать их, прежде чем он сможет их использовать. Так что если у вас глубокая иерархия наследования с PHP, я не думаю, что это хорошая идея.
Учитывая, что PHP является языком сценариев, лучше всего использовать его как язык сценариев. Это означает, что я просто использовал бы простые методы фабрики или компоновщика, чтобы сделать что-то похожее на внедрение зависимостей. Я не стал бы обременять это инфраструктурой DI, которая только добавит к вещам, которые среда выполнения PHP должна обрабатывать для каждого веб-запроса (если вы не выполняете кэширование кода операции, но все равно будут накладные расходы, которые не несут веб-платформы для Java и. СЕТЬ). Если мне нужно изменить объекты, которые будут внедрены в объекты, или то, как они создаются, было бы просто отредактировать сценарий, содержащий методы фабрики / сборки. Нет необходимости перекомпилировать там в любом случае. Таким образом, у меня есть гибкость, и у меня есть легкая архитектура, которая подходит для PHP-подхода.