事件(Events)
事件是可以将自定义代码“注入”到现有代码中的特定执行点。 附加自定义代码到某个事件,当这个事件被触发时,这些代码就会自动执行。 (推荐学习:yii教程)
例如,邮件程序对象成功发出消息时可触发 messageSent 事件。如想追踪成功发送的消息,可以附加相应追踪代码到 messageSent 事件。
Yii 引入了名为 yii\base\Component 的基类以支持事件。 如果一个类需要触发事件就应该继承 yii\base\Component 或其子类。
事件处理器(Event Handlers)
事件处理器是一个PHP 回调函数, 当它所附加到的事件被触发时它就会执行。可以使用以下回调函数之一:
字符串形式指定的 PHP 全局函数,如 'trim' ;
对象名和方法名数组形式指定的对象方法,如 [$object, $method] ;
类名和方法名数组形式指定的静态类方法,如 [$class, $method] ;
匿名函数,如 function ($event) { ... } 。
事件处理器的格式是:
function ($event) { // $event 是 yii\base\Event 或其子类的对象 }
通过 $event 参数,事件处理器就获得了以下有关事件的信息:
event name:事件名
event sender:调用 trigger() 方法的对象
custom data:附加事件处理器时传入的数据,默认为空,后文详述
附加事件处理器(Attaching Event Handlers)
调用 yii\base\Component::on() 方法来附加处理器到事件上。如:
$foo = new Foo; // 处理器是全局函数 $foo->on(Foo::EVENT_HELLO, 'function_name'); // 处理器是对象方法 $foo->on(Foo::EVENT_HELLO, [$object, 'methodName']); // 处理器是静态类方法 $foo->on(Foo::EVENT_HELLO, ['app\components\Bar', 'methodName']); // 处理器是匿名函数 $foo->on(Foo::EVENT_HELLO, function ($event) { //事件处理逻辑 });
以上是yii的事件是什么的详细内容。更多信息请关注PHP中文网其他相关文章!