【发布时间】:2026-01-24 22:45:01
【问题描述】:
我正在尝试基于构造函数注入在 PHP 中破解我自己的依赖注入容器。容器实例化复杂对象,并使用反射根据构造函数中的类型提示将所需的对象注入它们。
我显然偶然发现的一件事是,我可以注册多个可以注入的相同类型的组件(扩展相同的类/实现相同的接口)。例如,如果两个对象都需要实现 Iterator 接口的不同对象怎么办。 DI Containers 通常如何处理这个问题?如何让容器决定哪些接口不明确的对象需要注入哪些复杂对象?
或者是单个 DI 容器只负责创建一种类型的复杂对象?换句话说:为每个复杂对象实例化一个不同的 DI 容器。我很难想象这是意图,对吧?
【问题讨论】:
-
我删除了标签“php”,因为实现语言的选择与问题无关。
标签: dependency-injection ioc-container ambiguity