首页 > 代码库 > Yii2 静态方法触发事件如何实现?
Yii2 静态方法触发事件如何实现?
Yii框架是php中最常用的开发框架之一,本文和大家分享的就是Yii2框架的静态方法中,触发事件是如何实现的,希望本文的分享对大家有所帮助。 在ActiveRecord的init中写了一个简单的事件触发: 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 静态方法触发事件如何实现?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。