限时 5折! 详情

yii2源码分析-ServiceLocator 和 Component

3682 0 0

上文,我们了解到yii2的配置,实际是对 yii\web\Application 对象的配置。

但是,在进行 yii\baseYii::configure 方法的讲解时,我们疑问:如果我们在配置文件 main.php 内添加了一个 yii\web\Application 不存在的属性 key,会不会报错?

答:不一定。

假设我们先添加一个属性 a , 让其值等于 111

return [
    'a' => 111,
    'id' => 'app-frontend',
    'basePath' => dirname(__DIR__),
    // ...
];

浏览器访问一下首页,会发现报错提示

Setting unknown property: yii\web\Application::a

这很正常,也很好理解,即是对属性的配置,没有就报错嘛,不稀奇。

但是,这只是表面现象。main.php 文件内我们也对 components 项配置了却没有报错,这是为什么?

有些php基础的同学应该都能明白,这肯定是 php魔术方法 起到的效果,我们在这个系列的开篇有跟大家补充这方面的知识,还不懂的可以回去再补补。

我们来看yii2是如何实现这个功能的。

首先我们应该从 yii\web\Application 开始查找相应的 __set 方法的实现。经过

继续阅读

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