以下是Yii2源码中,ServiceLocator(服务定位器)与Container(依赖注入容器)的关系解析图。

一句话总结

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

clipboard.png


Charles
410 声望25 粉丝

14年入行,后端开发