99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋果6袋
6
麥子學(xué)院

Yii2 靜態(tài)方法中怎么觸發(fā)事件

發(fā)布時(shí)間:2016-12-12 13:49  回復(fù):0  查看:2494   最后回復(fù):2016-12-12 13:49  
Yii框架是php 中最常用的開發(fā)框架之一,本文和大家分享的就是Yii2框架的靜態(tài)方法中,觸發(fā)事件是如何實(shí)現(xiàn)的,希望本文的分享對大家有所幫助。
  在ActiveRecord init 中寫了一個(gè)簡單的事件觸發(fā) :
  PHP 代碼
   public  function  init(){
  $event =  new XxxEvent();
   $this->on( self::EVENT_AFTER_UPDATE,[$event,'doSomeThing']);
   parent::init();
  }
  就是這么簡單,然后在程序中有一段觸發(fā):
  PHP 代碼
   public  static  xxx(){
   self::updateAllCounters([],[]);
  }
  然后發(fā)現(xiàn),死活沒有觸發(fā)。追了一下代碼發(fā)現(xiàn),updateAllCounters 沒有從 AR 走,而是直接從 db->createCommand()->execute 走了
  于是在下面加了一行:
  self::trigger( self::EVENT_AFTER_UPDATE );
  然而直接報(bào)錯(cuò),說是trigger 不支持靜態(tài)調(diào)用,哦。。。 trigger 是非靜態(tài)方法。
  于是最后只能用萬能的call_user_func_array 的方法了:
  PHP 代碼
  call_user_func_array([ new  self,'trigger'],[ self::EVENT_AFTER_UPDATE]);
  有點(diǎn)賤,但總算實(shí)現(xiàn)了。
來源: 膘叔
您還未登錄,請先登錄

熱門帖子

最新帖子

?