接上篇:Yii分析1:web程序入口(2)
本文分析前两篇文章用到的一些函数。
上一篇提到在preloadComponents的时候会调用getComponent,我们来看一下getComponent的细节:
Yii_PATH/base/CModule.php
//第二个参数标识如果是空则创建之,默认为true public function getComponent($id,$createIfNull=true) { if(isset($this->_components[$id])) return $this->_components[$id]; //_componentConfig是在configure方法中由setComponents中已经保存的变量 else if(isset($this->_componentConfig[$id]) && $createIfNull) { $config=$this->_componentConfig[$id]; unset($this->_componentConfig[$id]); //如果没有设置enable参数或者enable参数为true if(!isset($config['enabled']) || $config['enabled']) { Yii::trace("Loading "$id" application component",'system.web.CModule'); unset($config['enabled']); //创建组件,并完成初始化 $component=Yii::createComponent($config); $component->init(); return $this->_components[$id]=$component; } } }