图解Yii2框架依赖注入容器、服务定位器
以下是Yii2源码中,ServiceLocator(服务定位器)与Container(依赖注入容器)的关系解析图。
一句话总结
Application继承了ServiceLocator,是一个服务器定位器,ServiceLocator用来管理和缓存组件的实例化对象。ServiceLocator调用Yii::createObject方法创建类得实例化对象,Yii::createObject实际上又调用了Container(依赖注入容器)获取每一个类的实例化对象。Container(依赖注入容器)自动解决待实例化类的依赖关系,并返回待实例化类的实例对象。