第九区

一个程序员的经验笔记

Yii2自定义component应用组件开发

| 暂无评论

Yii2的配置文件中有一段component,很多重要配置都在这一段中完成。component中的设置作用是全局加载重要的类库,完成应用的基础功能,比如连接数据库、配置缓存、选择网站地区和语言、配置路由等等。自己写一个测试组件,有助于加深对component的了解。

这本次学习中,我把测试组件放到了frontend/libs文件夹下,命名为testcomponent.php。

<?php
namespace frontend\libs;
use yii\base\Component;
/**
 * 测试应用组件
 * 在main.php的component段中注册本组件后,应该可以随处用YII::$app->testcomponent进行调用
 */
class Testcomponent extends Component{
    public $param1;//测试参数1
    public $param2;//测试参数2
    public function test(){
        $string='Test component done!<br/>';
        $string.='param1="'.$this->param1.'"<br/>';
        $string.='param2="'.$this->param2.'"<br/>';
        return $string;
    }
}

然后,在main.php的component段中调用它。

        'testcomponent'=>[
            'class'=>'frontend\libs\testcomponent',//加载类库
            'param1'=>111,//设置参数
            'param2'=>222
        ]

接下来,新建一个testController进行测试:

namespace frontend\controllers;
use Yii;
use yii\web\Controller;
use frontend\lib\testcomponent;
/**
 * 测试
 */
class TestController extends Controller
{
    /**
     * 测试自定义组件
     */
    public function actionComponent(){
        //测试是否调用成功
        $t=YII::$app->testcomponent;
        echo $t->test();
        //测试能否在action里直接调用
        $t2=new \frontend\libs\Testcomponent();
        echo $t2->test();
        exit;
    }
}

访问该网页看到显示如下:

Test component done!
param1="111"
param2="222"
Test component done!
param1=""
param2=""

第一段显示说明这个测试类在main.php配置文件中调用成功了,第二段显示说明它也能够在action里直接调用。一般来说,不要在配置文件里注册太多应用组件,应用组件就像全局变量,使用太多可能加大测试和维护的难度。 可以在需要时再创建本地组件。

发表评论

*为必填字段!