【问题标题】:Who is called a component's init() method?谁被称为组件的 init() 方法?
【发布时间】:2014-05-30 06:06:22
【问题描述】:

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

【问题讨论】:

    标签: php yii components


    【解决方案1】:

    来自CApplicationComponent 实现的IApplicationComponent interface 的API 页面。

    应用完成配置后,会调用每个加载的应用组件的init()方法。

    在深入挖掘之后,这是CModule::setComponent() 的源代码。 CModule 是所有模块和应用程序类的基类,因此_init 将由您的基应用程序类调用。

    elseif($component instanceof IApplicationComponent)
    {
        $this->_components[$id]=$component;
    
        if(!$component->getIsInitialized())
            $component->init(); // <----
    
        return;
    }
    

    【讨论】:

      猜你喜欢
      • 2011-10-05
      • 2011-05-03
      • 1970-01-01
      • 2017-02-15
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      相关资源
      最近更新 更多