视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
yii2.0 组件是什么
2020-11-03 18:23:59 责编:小采
文档

组件是 Yii 应用的主要基石。是 yiiaseComponent 类或其子类的实例。 三个用以区分它和其它类的主要功能有:

属性(Property) (推荐学习:yii框架)

事件(Event)

行为(Behavior)

或单独使用,或彼此配合,这些功能的应用让 Yii 的类变得更加灵活和易用。 以小部件 yiijuiDatePicker 来举例, 这是个方便你在 视图 中生成一个交互式日期选择器的 UI 组件:

use yiijuiDatePicker;

echo DatePicker::widget([
 'language' => 'zh-CN',
 'name' => 'country',
 'clientOptions' => [
 'dateFormat' => 'yy-mm-dd',
 ],
]);use yiijuiDatePicker;

echo DatePicker::widget([
 'language' => 'zh-CN',
 'name' => 'country',
 'clientOptions' => [
 'dateFormat' => 'yy-mm-dd',
 ],
]);

这个小部件继承自 yiiaseComponent,它的各项属性改写起来会很容易。

正是因为组件功能的强大,他们比常规的对象(Object)稍微重量级一点,因为他们要使用额外的内存和 CPU 时间来处理 事件 和 行为 。

如果你不需要这两项功能,可以继承 yiiaseObject 而不是 yiiaseComponent。这样组件可以像普通 PHP 对象一样高效, 同时还支持属性(Property)功能。

当继承 yiiaseComponent 或 yiiaseObject 时, 推荐你使用如下的编码风格:

若你需要重写构造方法(Constructor),传入 $config 作为构造器方法最后一个参数, 然后把它传递给父类的构造方法。

永远在你重写的构造方法结尾处调用一下父类的构造方法。

如果你重写了 yiiaseBaseObject::init() 方法,请确保你在 init 方法的开头处调用了父类的 init 方法。

<?php

namespace yiicomponentsMyClass;

use yiiaseBaseObject;

class MyClass extends BaseObject
{
 public $prop1;
 public $prop2;

 public function __construct($param1, $param2, $config = [])
 {
 // ... 在应用配置之前初始化

 parent::__construct($config);
 }

 public function init()
 {
 parent::init();

 // ... 应用配置后进行初始化
 }
}

另外,为了让组件可以在创建实例时能被正确配置,请遵照以下操作流程:

$component = new MyClass(1, 2, ['prop1' => 3, 'prop2' => 4]);
// 方法二:
$component = Yii::createObject([
 'class' => MyClass::className(),
 'prop1' => 3,
 'prop2' => 4,
], [1, 2])

下载本文
显示全文
专题