Class yii\base\Event

继承yii\base\Event » yii\base\BaseObject
实现yii\base\Configurable
子类yii\base\ActionEvent, yii\base\ModelEvent, yii\base\ViewEvent, yii\base\WidgetEvent, yii\db\AfterSaveEvent, yii\i18n\MissingTranslationEvent, yii\mail\MailEvent, yii\web\UserEvent
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/base/Event.php

Event 是所有事件类的基类.

它封装了与事件相关的参数. $sender 属性描述了触发事件的人员. $handled 属性指示事件是否被处理. 如果事件处理程序将 $handled 设置为true, 则将不再调用其它未调用的处理程序来处理事件.

此外, 在附加事件处理程序时, 可能会在调用事件处理程序时通过 $data 属性传递并提供额外的数据.

有关 Event 的更多详细信息和使用信息, 请参阅 权威指南 - 关键概念 - 事件(Events).

公共属性

隐藏继承的属性

属性类型描述定义在
$data mixed 附加事件处理程序时传递给 yii\base\Component::on() 的数据. yii\base\Event
$handled boolean 事件是否被处理. yii\base\Event
$name string 事件的名称. yii\base\Event
$sender object 此事件的发送者. yii\base\Event

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的已命名方法. yii\base\BaseObject
__construct() 构造函数. yii\base\BaseObject
__get() 返回对象属性的值. yii\base\BaseObject
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\BaseObject
__set() 设置对象属性的值. yii\base\BaseObject
__unset() 将对象属性设置为null. yii\base\BaseObject
canGetProperty() 返回一个值, 指示属性是否可读. yii\base\BaseObject
canSetProperty() 返回一个值, 指示属性是否可写. yii\base\BaseObject
className() 返回此类的完全限定名称. yii\base\BaseObject
hasHandlers() 返回一个值, 指示是否有附加到指定类级别事件的处理程序. yii\base\Event
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\BaseObject
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\BaseObject
init() 初始化对象. yii\base\BaseObject
off() 从类级别的事件中分离事件处理程序. yii\base\Event
offAll() 分离所有已注册的类级别事件处理程序. yii\base\Event
on() 将事件处理程序附加到类级别的事件. yii\base\Event
trigger() 触发类级别的事件. yii\base\Event

属性详情

$data public 属性

附加事件处理程序时传递给 yii\base\Component::on() 的数据.

Note: 这根据当前正在执行的事件处理程序而有所不同.

public mixed $data null
$handled public 属性

事件是否被处理. 默认为false. 当处理程序将其设置为true时, 事件处理将停止并忽略其余未调用的事件处理程序.

public boolean $handled false
$name public 属性

事件的名称. 该属性由 yii\base\Component::trigger()trigger() 设置. 事件处理程序可以使用该属性来检查它正在处理什么事件.

public string $name null
$sender public 属性

此事件的发送者. 如果未设置, 则此属性将被设置为调用了trigger()方法的对象. 当此事件是在静态上下文中触发的类级别事件时, 该属性也可能是null.

public object $sender null

方法详情

hasHandlers() public static 方法

返回一个值, 指示是否有附加到指定类级别事件的处理程序.

Note: 该方法还将检查所有父类, 以查看命名事件是否附加了任何处理程序.

public static boolean hasHandlers ( $class, $name )
$class string|object

指定类级别事件的对象或完全限定类名称.

$name string

事件的名称.

return boolean

是否有附加到事件的处理程序.

off() public static 方法

从类级别的事件中分离事件处理程序.

该方法和 on() 相反.

Note: 如果为类名称或事件名称传递通配符模式, 则只会删除在此通配符注册的处理程序, 而将保留以与该通配符匹配的纯名称注册的处理程序.

参见 on().

public static boolean off ( $class, $name, $handler null )
$class string

需要从种分离事件处理程序的完全限定类名称.

$name string

事件的名称.

$handler callable

要移除的事件处理程序. 如果为null, 则将删除所有附加到指定事件的处理程序.

return boolean

是否找到并分离了处理程序.

offAll() public static 方法 (可用自版本: 2.0.10)

分离所有已注册的类级别事件处理程序.

参见:

public static void offAll ( )
on() public static 方法

将事件处理程序附加到类级别的事件.

当触发一个类级事件时, 将调用附加到该类和所有父类的事件处理程序.

例如, 以下代码将事件处理程序附加到ActiveRecordafterInsert事件中:

Event::on(ActiveRecord::className(), ActiveRecord::EVENT_AFTER_INSERT, function ($event) {
    Yii::trace(get_class($event->sender) . ' is inserted.');
});

每次成功插入 ActiveRecord 都会调用该处理程序.

自 2.0.14 起, 你可以将类名或事件名指定通配符模式:

Event::on('app\models\db\*', '*Insert', function ($event) {
    Yii::trace(get_class($event->sender) . ' is inserted.');
});

有关如何声明事件处理程序的更多详细信息, 请参阅 yii\base\Component::on().

参见 off().

public static void on ( $class, $name, $handler, $data null, $append true )
$class string

事件处理程序需要附加的全限定类名.

$name string

事件的名称.

$handler callable

事件处理程序.

$data mixed

触发事件时要传递给事件处理程序的数据. 当调用事件处理程序时, 可以通过 yii\base\Event::$data 访问此数据.

$append boolean

是否将新的事件处理程序附加到现有处理程序列表的末尾. 如果为false, 则新处理程序将被插入到现有处理程序列表的开头.

trigger() public static 方法

触发类级别的事件.

此方法将导致事件处理程序的调用, 该事件处理程序附加到指定类及其所有父类的命名事件.

public static void trigger ( $class, $name, $event null )
$class string|object

指定类级别事件的对象或完全限定类名称.

$name string

事件的名称.

$event yii\base\Event

事件的参数. 如果未设置, 则会创建一个默认的 yii\base\Event 对象.