谁被称为组件的init()方法?

时间:2014-04-15 18:11:11

标签: php yii components

我只是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源代码中调用此方法的行。

1 个答案:

答案 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;
}