继承 | yii\base\Component » yii\base\Object |
---|---|
可用自版本 | 2.0 |
组件的基类,它实现了属性,事件和行为特征。
组件提供了事件和行为特性,除了财产功能,实现父类的对象.
事件是一种“注入”自定义代码在某些地方到现有的代码。例如,一个对象可以触发一个“添加”事件发表看法时用户添加了一个注释。我们可以编写自定义代码,将它附加到这个事件,当事件被触发时(即添加评论),我们将执行自定义代码。
一个事件是由一个名字标识,在它被定义的类中应该是惟一的。事件名称是区分大小写的。
一个或多个PHP回调,称为事件处理程序,可以被附加到一个事件。你可以叫触发()来提高一个事件。事件时,事件处理程序会自动调用它们的顺序。
将事件处理程序附加到事件, call on():
$post->on('update', function ($event) {
// send email notification
});
在上面,一个匿名函数附加到事件的“更新”。你可以附上以下类型的事件处理程序:
- 匿名函数:
function ($event) { ... }
- 对象方法:
[$object, 'handleAdd']
- 静态类方法:
['Page', 'handleAdd']
- 全局函数:
'handleAdd'
一个事件处理程序的签名应该像下面:
function foo($event)
$event
是一个yii\base\Event与事件相关联的对象包括参数
你也可以附加一个事件处理程序,当配置一个组件与一个配置阵列。语法就像以下:
[
'on add' => function ($event) { ... }
]
在on add
代表将事件添加事件。
有时,你可能想要把额外的数据与一个事件处理程序,当你将它附加到一个事件,然后调用处理程序时访问它。你可以这样做
$post->on('update', function ($event) {
// the data can be accessed via $event->data
}, $data);
yii\base\Behavior是一个实例的行为或其子类。一个组件可以与一个或多个附加行为。当一个行为附加到一个组件,它的公共属性和方法直接可以通过访问组件,如果组件拥有这些属性和方法
附加组件的行为,宣布在behaviors(),或显式地调用attachBehavior()。行为中声明的behaviors()会自动连接到相应的组件。
还可以附加一个行为一个组件在配置配置阵列。语法就像以下:
[
'as tree' => [
'class' => 'Tree',
],
]
而as tree
附加行为叫tree
,和数组将被传递给Yii:createObject()来创建对象的行为
更多细节和使用信息组件,请参阅指南文章组件.
公共方法
方法 | 描述 | 定义在 |
---|---|---|
__call() | 调用指定的方法而不是一个类方法. | yii\base\Component |
__clone() | 调用此方法后,对象是由克隆现有的一个. | yii\base\Component |
__get() | 返回一个组件属性的值. | yii\base\Component |
__isset() | 检查如果属性设置,即定义和not null. | yii\base\Component |
__set() | 设置组件的属性的值. | yii\base\Component |
__unset() | 一个组件属性设置为null. | yii\base\Component |
attachBehavior() | 高度该组件的行为. | yii\base\Component |
attachBehaviors() | 高度的行为列表组件。 | yii\base\Component |
behaviors() | 返回一个列表的行为,这个组件应该像 | yii\base\Component |
canGetProperty() | 返回一个值指示是否可以读取属性。 | yii\base\Component |
canSetProperty() | 返回一个值指示是否可以设置一个属性 | yii\base\Component |
detachBehavior() | 分离组件的行为。 | yii\base\Component |
detachBehaviors() | 分离所有组件的行为。 | yii\base\Component |
ensureBehaviors() | 确保行为中声明的behaviors()附加到该组件。 | yii\base\Component |
getBehavior() | 返回指定对象的行为。 | yii\base\Component |
getBehaviors() | 返回所有行为附加到该组件 | yii\base\Component |
hasEventHandlers() | 返回一个值指示是否有处理程序连接到指定的事件。 | yii\base\Component |
hasMethod() | 返回一个值指示是否定义了一个方法. | yii\base\Component |
hasProperty() | 返回一个值指示是否为该组件定义属性。 | yii\base\Component |
off() | 从该组件分离现有的事件处理程序。 | yii\base\Component |
on() | 附加一个事件的事件处理程序。 | yii\base\Component |
trigger() | 触发一个事件. | yii\base\Component |
方法详情
__call() public 方法
调用指定的方法而不是一个类方法.
该方法将检查如果有任何附加行为如果可用的命名方法和将执行它。
不要直接调用这个方法,因为它是一个PHP魔术方法时将隐式地调用一个未知的方法被调用。
public mixed __call ( $name, $params ) | ||
$name | string | 方法名 |
$params | array | 方法 参数 |
return | mixed | 该方法返回值 |
---|---|---|
throws | yii\base\UnknownMethodException | 当调用未知的方法 |
__clone() public 方法
调用此方法后,对象是由克隆现有的一个.
它删除所有的行为,因为他们是在旧的对象.
public void __clone ( ) |
__get() public 方法
返回一个组件属性的值
该方法将按照以下顺序检查并采取相应行动:
- 属性定义为一个getter:返回getter结果
- 一个属性的行为:返回属性值的行为
不要直接调用这个方法,因为它是一个PHP魔术方法时将隐式地调用执行 $value = $component->property;
.
参见 __set().
public mixed __get ( $name ) | ||
$name | string | 属性名 |
return | mixed | 属性值或一个行为的财产的价值 |
---|---|---|
throws | yii\base\UnknownPropertyException | 如果没有定义的属性 |
throws | yii\base\InvalidCallException | 如果只写属性. |
__isset() public 方法
检查如果属性设置,即定义和not null.
该方法将按照以下顺序检查并采取相应行动:
- setter属性定义为:返回属性设置
- 一个属性的行为:返回属性设置
- 为非现有属性返回false
不要直接调用这个方法,因为它是一个PHP魔术方法时将隐式地调用执行 isset($component->property)
.
参见 http://php.net/manual/en/function.isset.php.
public boolean __isset ( $name ) | ||
$name | string | 属性名或事件的名称 |
return | boolean | 是否指定的属性设置 |
---|
__set() public 方法
设置组件的属性的值.
该方法将按照以下顺序检查并采取相应行动:
- setter属性定义为:设置属性值
- “xyz”的格式的一个事件:事件处理程序附加到“xyz”
- 格式的行为“xyz”:把行为命名为“xyz”
- 一个属性的行为:设置属性值的行为
不要直接调用这个方法,因为它是一个PHP魔术方法时将隐式地调用执行$component->property = $value;
.
参见 __get().
public void __set ( $name, $value ) | ||
$name | string | 属性名或事件的名称 |
$value | mixed | 属性值 |
throws | yii\base\UnknownPropertyException | 如果没有定义的属性 |
---|---|---|
throws | yii\base\InvalidCallException | 如果属性是只读的 |
__unset() public 方法
一个组件属性设置为null.
该方法将按照以下顺序检查并采取相应行动:
- setter属性定义为:设置属性值为null
- 一个属性的行为:设置属性值为null
不要直接调用这个方法,因为它是一个PHP魔术方法时将隐式地调用执行 unset($component->property)
.
参见 http://php.net/manual/en/function.unset.php.
public void __unset ( $name ) | ||
$name | string | 属性名 |
throws | yii\base\InvalidCallException | 如果属性是只读的. |
---|
attachBehavior() public 方法
高度该组件的行为.
该方法将创建对象的行为基于给定的配置。之后,行为对象将被附加到这个组件通过调用yii\base\Behavior::attach() 方法。
参见 detachBehavior().
public yii\base\Behavior attachBehavior ( $name, $behavior ) | ||
$name | string | 的名字的行为。 |
$behavior | string|array|yii\base\Behavior | 配置的行为。这可以是下列之一:
|
return | yii\base\Behavior | 行为的对象 |
---|
attachBehaviors() public 方法
高度的行为列表组件。
每个行为都是被它的名字,应该yii\base\Behavior对象,一个字符串指定行为类,或配置数组创建的行为。
参见 attachBehavior().
public void attachBehaviors ( $behaviors ) | ||
$behaviors | array | 被附加到组件的行为列表 |
behaviors() public 方法
返回一个列表的行为,这个组件应该像
子类可以重写这个方法来指定他们想表现的行为.
这个方法的返回值应该是一个数组的行为或配置索引的对象行为的名字。行为的配置可以是一个字符串数组指定行为类或以下的结构:
'behaviorName' => [
'class' => 'BehaviorClass',
'property1' => 'value1',
'property2' => 'value2',
]
请注意,一个行为类必须扩展基数yii \ \行为。行为可以连接使用一个名称或匿名。当一个名称用作数组键时,使用这个名字,稍后可以检索行为使用getBehavior()或使用detachBehavior分离()。匿名的行为不能被检索或分离。
行为中声明该方法将自动连接到组件(按需).
public array behaviors ( ) | ||
return | array | 配置的行为. |
---|
canGetProperty() public 方法
返回一个值指示是否可以读取属性.
一个属性可以读取:
- 相关的类都有一个getter方法指定的名称(在本例中,属性名称不区分大小写);
- 指定名称的类都有一个成员变量(当
$checkVars
是true) - 的附加行为可读属性名字(当
$checkBehaviors
是true)
参见 canSetProperty().
public boolean canGetProperty ( $name, $checkVars = true, $checkBehaviors = true ) | ||
$name | string | 属性名 |
$checkVars | boolean | 将成员变量是否为属性 |
$checkBehaviors | boolean | 治疗行为的属性是否为该组件的属性 |
return | boolean | 该属性是否可读 |
---|
canSetProperty() public 方法
返回一个值指示是否可以设置一个属性
一个属性可以写:
- t他类有一个相关联的setter方法指定的名称(在本例中,属性名称不区分大小写);
- 他与指定的类都有一个成员变量名称(when
$checkVars
is true); - 附加行为有一个可写属性的名字 (when
$checkBehaviors
is true).
参见 canGetProperty().
public boolean canSetProperty ( $name, $checkVars = true, $checkBehaviors = true ) | ||
$name | string | 属性名 |
$checkVars | boolean | 将成员变量是否为属性 |
$checkBehaviors | boolean | 治疗行为的属性是否为该组件的属性 |
return | boolean | 该属性是否可以写 |
---|
detachBehavior() public 方法
分离组件的行为.
行为的基础yii\base\Behavior::detach()方法将被调用
public null|yii\base\Behavior detachBehavior ( $name ) | ||
$name | string | The behavior's name. |
return | null|yii\base\Behavior | 分离行为。空如果行为不存在。 |
---|
detachBehaviors() public 方法
分离所有组件的行为。
public void detachBehaviors ( ) |
ensureBehaviors() public 方法
确保行为中声明的行为()附加到该组件。
public void ensureBehaviors ( ) |
getBehavior() public 方法
返回指定对象的行为。
public null|yii\base\Behavior getBehavior ( $name ) | ||
$name | string | 行为的名称 |
return | null|yii\base\Behavior | 行为对象,或null如果行为不存在 |
---|
getBehaviors() public 方法
返回所有行为附加到该组件。
public yii\base\Behavior[] getBehaviors ( ) | ||
return | yii\base\Behavior[] | 行为附加到该组件的列表 |
---|
hasEventHandlers() public 方法
返回一个值指示是否有处理程序连接到指定的事件
public boolean hasEventHandlers ( $name ) | ||
$name | string | 事件名 |
return | boolean | 是否有处理程序附加到事件. |
---|
hasMethod() public 方法
返回一个值指示是否定义了一个方法。
如果定义了一个方法:
- 指定名称的类有一个方法
- 附加行为具有给定名称的方法 (when
$checkBehaviors
is true).
public boolean hasMethod ( $name, $checkBehaviors = true ) | ||
$name | string | 属性名 |
$checkBehaviors | boolean | 治疗行为的方法是否该组件的方法 |
return | boolean | 是否定义的方法 |
---|
hasProperty() public 方法
返回一个值指示是否为该组件定义属性。
如果定义的属性:
- 类有一个相关联的getter或setter方法指定的名称 (in this case, property name is case-insensitive);
- 他与指定的类都有一个成员变量名称(when
$checkVars
is true); - 附加行为有一个属性的名字 (when
$checkBehaviors
is true).
参见:
public boolean hasProperty ( $name, $checkVars = true, $checkBehaviors = true ) | ||
$name | string | 属性名 |
$checkVars | boolean | 将成员变量是否为属性 |
$checkBehaviors | boolean | 治疗行为的属性是否为该组件的属性 |
return | boolean | 是否定义的属性 |
---|
off() public 方法
从该组件分离现有的事件处理程序。
这个方法是相反的 on().
参见 on().
public boolean off ( $name, $handler = null ) | ||
$name | string | 事件名 |
$handler | callable | 事件处理程序被删除。如果它为空,所有连接到指定的事件处理程序将被删除。 |
return | boolean | 如果找到一个处理程序和分离 |
---|
on() public 方法
附加一个事件的事件处理程序
事件处理程序必须是一个有效的PHP回调。以下是一些例子:
function ($event) { ... } // anonymous function
[$object, 'handleClick'] // $object->handleClick()
['Page', 'handleClick'] // Page::handleClick()
'handleClick' // global function handleClick()
事件处理程序必须定义以下签名,
function ($event)
在 $event
is an yii\base\Event与事件相关联的对象包括参数
参见 off().
public void on ( $name, $handler, $data = null, $append = true ) | ||
$name | string | 事件名 |
$handler | callable | The event handler |
$data | mixed | 数据被传递到事件处理程序当事件被触发。当事件处理程序被调用时,该数据可以通过访问 yii\base\Event::$data. |
$append | boolean | 是否新的事件处理程序附加到现有的处理程序列表。如果错误,新的处理程序将插入到现有的处理程序列表的开始。 |
trigger() public 方法
触发一个事件。
这种方法表示一个事件的发生。它调用处理程序类级别等事件处理程序。
public void trigger ( $name, yii\base\Event $event = null ) | ||
$name | string | 事件名 |
$event | yii\base\Event | 事件参数。如果没有设置,默认 yii\base\Event 对象将被创建 |