Yii 事件处理器(事件handler)
来源:互联网 发布:如何评价储安平知乎 编辑:程序博客网 时间:2024/06/05 06:34
yii\base\Component中有一个private $_handler[]数组,用于保存该Component所有事件,该数组的下标为事件名,数组元素是形为一系列 [$handler, $data] 的数组。如链接中图所示
Component::on方法源代码:
public function on($name, $handler, $data = null, $append = true)
{
$this->ensureBehaviors();
if ($append || empty($this->_events[$name])) {
$this->_events[$name][] = [$handler, $data];
} else {
array_unshift($this->_events[$name], [$handler, $data]);
}
}
调用 yii\base\Component::on() 方法来附加处理器到事件上:
$foo = new Foo;// 处理器是全局函数$foo->on(Foo::EVENT_HELLO, 'function_name');
对象(对象静态)方法写成以数组的形式[$object,'methodName']
// 处理器是对象方法$foo->on(Foo::EVENT_HELLO, [$object, 'methodName']);
对象静态方法写成以数组的形式[\namespace\dir\classname,'methodName']// 处理器是静态类方法$foo->on(Foo::EVENT_HELLO, ['app\components\Bar', 'methodName']);// 处理器是匿名函数$foo->on(Foo::EVENT_HELLO, function ($event) { //事件处理逻辑});
移除事件处理器:
// 处理器是全局函数$foo->off(Foo::EVENT_HELLO, 'function_name');// 处理器是对象方法$foo->off(Foo::EVENT_HELLO, [$object, 'methodName']);// 处理器是静态类方法$foo->off(Foo::EVENT_HELLO, ['app\components\Bar', 'methodName']);// 处理器是匿名函数$foo->off(Foo::EVENT_HELLO, $anonymousFunction);
移除事件的全部处理器,简单调用 yii\base\Component::off() 即可
$foo->off(Foo::EVENT_HELLO);
匿名函数事件处理器注意事项:
注意当匿名函数附加到事件后一般不要尝试移除匿名函数,除非你在某处存储了它
0 0
- Yii 事件处理器(事件handler)
- 事件,委托,处理器 Event, Delegate, Handler
- Yii 事件
- YII事件
- Javascript绑定事件处理器
- ACE事件处理器
- swing 事件处理器
- Vue的事件处理器
- vue事件处理器
- vue事件处理器
- Vue的事件处理器
- vue事件处理器
- ofbiz Java事件处理器
- Vue.js 事件处理器
- DOM绑定事件处理器
- JavaScript对话框+事件处理器
- jquery绑定事件处理器
- 23. Yii 组件事件
- selenium一个完整的unittest测试框架格式(单线程,非测试报告)
- Yii 组件编码风格
- 镜头彗形畸变研究 takumar f1.4
- Yii 属性编码风格
- 使用Chrome和迅雷下载极其难下的fl…
- Yii 事件处理器(事件handler)
- JavaEE开发之Spring中的多线程编程以及任务定时器详解
- 【1】一铭操作系统初体验,安装jav…
- Yii 控制器学习——内容摘自http://www.yiichina.com/中文官网
- mave 启动报错 java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
- 【2】一铭操作系统初体验,gcc和编…
- Yii控制器生命周期及最佳实践
- 使用Spring RESTful服务接收和返回JSON最佳实践
- 【3】一铭操作系统初体验,安装ope…