组件是 Yii 应用程序的主要构建块。组件是 yii\base\Component 或其扩展类的实例。组件为其他类提供的三个主要功能是
单独或组合使用,这些功能使 Yii 类更易于定制和使用。例如,包含的 yii\jui\DatePicker(一个用户界面组件)可以在 视图 中使用以生成交互式日期选择器
use yii\jui\DatePicker;
echo DatePicker::widget([
'language' => 'ru',
'name' => 'country',
'clientOptions' => [
'dateFormat' => 'yy-mm-dd',
],
]);
该小部件的属性易于写入,因为该类扩展了 yii\base\Component.
虽然组件功能非常强大,但它们比普通对象稍微重一些,因为支持 事件 和 行为 功能需要额外的内存和 CPU 时间。如果你的组件不需要这两个功能,你可能考虑从 yii\base\BaseObject 而不是 yii\base\Component 扩展你的组件类。这样做会使你的组件与普通 PHP 对象一样高效,但会增加对 属性 的支持。
当你从 yii\base\Component 或 yii\base\BaseObject 扩展你的类时,建议你遵循以下约定
$config
参数指定为构造函数的最后一个参数,然后将此参数传递给父构造函数。init()
方法开头调用 init()
方法的父实现。例如
<?php
namespace yii\components\MyClass;
use yii\base\BaseObject;
class MyClass extends BaseObject
{
public $prop1;
public $prop2;
public function __construct($param1, $param2, $config = [])
{
// ... initialization before configuration is applied
parent::__construct($config);
}
public function init()
{
parent::init();
// ... initialization after configuration is applied
}
}
遵循这些指南将使你的组件在创建时 可配置。例如
$component = new MyClass(1, 2, ['prop1' => 3, 'prop2' => 4]);
// alternatively
$component = \Yii::createObject([
'class' => MyClass::class,
'prop1' => 3,
'prop2' => 4,
], [1, 2]);
信息:虽然调用 Yii::createObject() 的方法看起来更复杂,但它更强大,因为它是在 依赖注入容器 之上实现的。
该 yii\base\BaseObject 类强制执行以下对象生命周期
$config
进行对象配置。配置可能会覆盖在构造函数中设置的默认值。前三步都在对象的构造函数中完成。这意味着,一旦你获得了类实例(即对象),该对象就已经被初始化为一个正确、可靠的状态。
发现错别字或你认为此页面需要改进?
在 github 上编辑它 !
注册 或 登录 以评论。