码迷,mamicode.com
首页 > Web开发 > 详细

Yii2 静态方法触发事件如何实现?

时间:2016-12-12 13:48:18      阅读:376      评论:0      收藏:0      [点我收藏+]

标签:

Yii框架是php中最常用的开发框架之一,本文和大家分享的就是Yii2框架的静态方法中,触发事件是如何实现的,希望本文的分享对大家有所帮助。
ActiveRecordinit中写了一个简单的事件触发:
PHP代码
public function init(){
$event = new XxxEvent();
$this->on(self::EVENT_AFTER_UPDATE,[$event,’doSomeThing’]);
parent::init();
}
就是这么简单,然后在程序中有一段触发:
PHP代码
public static xxx(){
self::updateAllCounters([],[]);
}
然后发现,死活没有触发。追了一下代码发现,updateAllCounters没有从AR走,而是直接从db->createCommand()->execute走了
于是在下面加了一行:
self::trigger( self::EVENT_AFTER_UPDATE );
然而直接报错,说是trigger不支持静态调用,哦。。。trigger是非静态方法。
于是最后只能用万能的call_user_func_array的方法了:
PHP代码
call_user_func_array([new self,’trigger’],[self::EVENT_AFTER_UPDATE]);
有点贱,但总算实现了。
来源:膘叔

Yii2 静态方法触发事件如何实现?

标签:

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
jiangjie190
加入时间:2016-02-19
  关注此人  发短消息
文章分类
jiangjie190”关注的人------(0
jiangjie190”的粉丝们------(1
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!