1. 内部组件
Yii 2.0 框架中有很多内部组件,如:db(数据库)、session、cookie、gii、cache(缓存)、log、DI(依赖注入)等。
2. 自定义组件
以 Yii 2.0 基础版为例,高级版类似。
在 basic 目录下新建一个组件目录 components 作为自定义的组件目录,它与控制器目录同级。
在 basic/components 目录下新建一个自定义组件的类文件 ArrayCom.php,内容如下:
port;
}
}
?>
然后,在 basic/config/web.php 中的 $config 中的 components 所指向的数组中,注册自定义的组件,即添加如下的键值对:
// 使用配置数组,注册自定义组件 arr
'arr' => [
'class' => 'app\components\ArrayCom', // 组件名称 arr 所指向的类文件
'port' => '3309', // 自定义组件的属性,在控制器的方法中这样访问属性 port 的值,\Yii::$app->arr->port
],
<?php
namespace app\controllers;
use yii\web\Controller;
class ComController extends Controller
{
public function actionIndex(){
$array = array(1,2,3,4,3,2,3,5);
// 调用组件 arr 中的方法
$res = \Yii::$app->arr->unique($array);
var_dump($res);
echo '<hr>';
// 访问组件 arr 的属性
echo \Yii::$app->arr->port;
echo '<hr>';
echo \Yii::$app->arr->getPort();
}
}
?>
总结:
- 对于某些需要经常用到的类,如:短信发送类、redis操作类、AES加密类等等,我们都可以按照类似的方式将其封装为自定义组件,便于多次调用。
- 注册组件的方式,除了可以用配置数组进行注册外,还可以使用类名或函数的方式进行注册,详情可参考 Yii 2.0 手册的应用组件部分。
- 请谨慎注册太多组件, 组件就像全局变量, 注册太多可能加大测试和维护的难度。