yii的事件是什么

yii的事件是什么

事件(Events)

事件是可以将自定义代码“注入”到现有代码中的特定执行点。 附加自定义代码到某个事件,当这个事件被触发时,这些代码就会自动执行。          (推荐学习:yii教程

例如,邮件程序对象成功发出消息时可触发 messageSent 事件。如想追踪成功发送的消息,可以附加相应追踪代码到 messageSent 事件。

Yii 引入了名为 yiibaseComponent 的基类以支持事件。 如果一个类需要触发事件就应该继承 yiibaseComponent 或其子类。

事件处理器(Event Handlers)

事件处理器是一个PHP 回调函数, 当它所附加到的事件被触发时它就会执行。可以使用以下回调函数之一:

字符串形式指定的 PHP 全局函数,如 ‘trim’ ;

对象名和方法名数组形式指定的对象方法,如 [$object, $method] ;

类名和方法名数组形式指定的静态类方法,如 [$class, $method] ;

匿名函数,如 function ($event) { … } 。

事件处理器的格式是:

function ($event) {     // $event 是 yiibaseEvent 或其子类的对象 }

通过 $event 参数,事件处理器就获得了以下有关事件的信息:

event name:事件名

event sender:调用 trigger() 方法的对象

custom data:附加事件处理器时传入的数据,默认为空,后文详述

附加事件处理器(Attaching Event Handlers)

调用 yiibaseComponent::on() 方法来附加处理器到事件上。如:

$foo = new Foo;  // 处理器是全局函数 $foo->on(Foo::EVENT_HELLO, 'function_name');  // 处理器是对象方法 $foo->on(Foo::EVENT_HELLO, [$object, 'methodName']);  // 处理器是静态类方法 $foo->on(Foo::EVENT_HELLO, ['appcomponentsBar', 'methodName']);  // 处理器是匿名函数 $foo->on(Foo::EVENT_HELLO, function ($event) {     //事件处理逻辑 });

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享