手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜Qcloud , 注册 | 登陆

Yii2 静态方法 中怎么触发事件

首页 > PHP >

在ActiveRecord的init中写了一个简单的事件触发:

PHP代码
  1. public function init(){    
  2.    $event = new XxxEvent();    
  3.    $this->on(self::EVENT_AFTER_UPDATE,[$event,'doSomeThing']);    
  4.     parent::init();    
  5. }    

就是这么简单,然后在程序中有一段触发:

PHP代码
  1. public static xxx(){  
  2.    self::updateAllCounters([],[]);  
  3. }  

然后发现,死活没有触发。追了一下代码发现,updateAllCounters没有从AR走,而是直接从db->createCommand()->execute走了

于是在下面加了一行:

self::trigger(self::EVENT_AFTER_UPDATE);

然而直接报错,说是trigger不支持静态调用,哦。。。trigger是非静态方法。

于是最后只能用万能的call_user_func_array的方法了:

PHP代码
  1. call_user_func_array([new self,'trigger'],[self::EVENT_AFTER_UPDATE]);  

有点贱,但总算实现了。

 

 

 

 

 

 



本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):