如何在Web应用程序中使用Yii组件?

时间:2014-04-13 10:25:58

标签: php yii components

我已经编写了位于/protected/components/document.php

的测试组件
class Document extends CComponent{
    private $_width;
    public __construct($width){
        this->_width=$width;
    }
    public function getWidth(){
        return $this->_width;
    }
}

现在我尝试在我的控制器操作之一中使用此组件,如下所示:

$docum=new Document('150');
echo $docum->width;

但引发了以下异常:

include(Document.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory 

如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

首先,您应该将文件从document.php重命名为Document.php。其次,如果您想通过new创建其实例,则不应将其从CComponent类扩展。

要使用组件而不通过new创建组件,您应该

  1. 从CApplicationComponent扩展您的课程。
  2. 在组件部分的config.php中配置它:

    &#39;文件&#39; =&GT;阵列(     &#39;类&#39; =&GT; &#39;文件&#39 ;,     //其他属性 ),

  3. 将其用作Yii :: app() - &gt; document-&gt; method();

  4. 此外,如果您从CApplicationComponent扩展您的类,则不应定义__construct方法,而是应在重写的init()方法中进行所有初始化。

答案 1 :(得分:-1)

基本上缺少导入文件:

Yii::import('application.components.Document');