Dependency injection (внедрение зависимости) — одна из самых загадочных и запутанных тем для программистов. С одной стороны DI можно описать конкретным php-кодом, но потом выяснится, что он повторяет существующий паттерн программирования. И тогда мы начинаем пускаться в абстракцию, пытаясь хоть как-то объяснить принципиальные различия.
Ситуацию усложняет тот момент, что в разных php-фреймворках подход к этому вопросу сильно разнится: как реализация, так и терминология. Здесь опять же играет тот факт, что PHP заимствует все эти идеи из других языков, но из-за концептуальных различий (например с Java), в итоге приводит к этой самой путанице.