简介:
容器(container)技术(可以理解为全局的工厂方法), 已经是现代项目的标配. 基于容器, 可以进一步实现控制反转, 依赖注入....所谓”双容器策略”, 总结如下:
同时运行 “进程级容器” 与 “请求级容器”
“进程级容器” :
传统的IoC 容器, 例如 Illuminate/container
“请求级容器” :
所有工厂方法注册到容器的静态属性上..., 或者一个方法被容器调用时, 就可以方便地实现依赖注入....简单来说, 容器通过反射机制可获取目标方法的依赖 ( laravel 用反射来获取 typehint 类型约束, 而 Swoft项目似乎与spring 相似, 是从注释上获取的)....然后容器查找是否已注册了 依赖 (dependency) 的实现 (resolver), 如果已注册, 就从容器中生成该依赖, 再注入给目标方法.