我只是Yii框架中的新手,我正在尝试使用Yii组件。让我有一个简单的测试组件:
class document extends CApplicationComponent{
private $_width='150';
public function init(){
echo "This is document component init method.";
}
public function getWidth(){
return $this->_width;
}
}
如果我在代码中使用此组件,如下所示:
Yii::import('application.components.document');
$width=Yii::app()->document->width;
然后组件的init()
方法正在调用。谁叫这种方法?您能否参考Yii源代码中调用此方法的行。
答案 0 :(得分:1)
CApplicationComponent
实施的IApplicationComponent interface的API页面。
应用程序完成配置后,它将调用每个已加载的应用程序组件的
init()
方法。
在深入挖掘之后,这是CModule::setComponent()
的源代码。 CModule是所有模块和应用程序类的基类,因此基础应用程序类将调用_init
。
elseif($component instanceof IApplicationComponent)
{
$this->_components[$id]=$component;
if(!$component->getIsInitialized())
$component->init(); // <----
return;
}