限时 5折! 详情

yii2源码分析-yii2依赖注入容器(一)

5658 0 0

在php中,依赖注入以及依赖注入容器,先前我们均有所了解。关于其原理,我们也做过说明,且配有大量的例子加以辅导,如果你还有问题,留言告诉我。

今天我们来看一下yii2内部是如何实现依赖注入容器的。

为什么突然又回到这个问题上了?

接上文对Yii.php的分析,我们应该看Yii.php文件内的最后一行代码了

Yii::$container = new yii\di\Container();

其含义是实例化依赖注入容器,赋值给 Yii::$container 属性,也就是说yii2中依赖注入容器指的就是 yii\di\Container 类的实现。

ps: 需要的话,你可以在源码文件上写一下注解,放宽心,尽管写。

注意,Yii::$container 具有全局性,所以我们在应用中使用 Container 时,尽量使用 Yii::$container 操作,而不是这里实例化一个Container,那里实例化一个Container。

关于Container创建对象的操作,我们可以使用 BaseYii::createObject 方法,该方法封装了 yii\di\Container 类的使用,所以我们通常直接用 Yii::createObject 方法创建对象或者调用可回调函数,这在yii2内非常普遍,后面我们会遇到很多 Yii::createObject 创建对象的例子。

为了避免枯燥的分析,我们来两个例子,希望各位看的更明白些。

在 frontend\components 目录下创建两个类文件 T.php 和 Test.php(compone

继续阅读

还有90%的精彩内容,购买继续阅读