您好,登錄后才能下訂單哦!
小編給大家分享一下yii2.0如何綁定事件,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
在yii2中,事件的綁定是通過yii\base\Component的on方法進(jìn)行操作的,我們?cè)诙x事件的同時(shí),需要為其綁定一個(gè)回調(diào)函數(shù)。
看下例子,先寫下一個(gè)控制器,用on綁定事件,然后在方法里面用triggle調(diào)用
namespace backend\controllers; use yii\web\Controller; class EventController extends Controller { const TEST_EVENT = 'event'; public function init() { parent::init(); $this->on(self::TEST_EVENT,function(){echo '這個(gè)一個(gè)事件測(cè)試。。。';}); } public function actionIndex() { $this->trigger(self::TEST_EVENT); } }
訪問index方法后得到事件的結(jié)果。在進(jìn)入控制器的時(shí)候就給‘event’綁定了一個(gè)時(shí)間,on第一個(gè)參數(shù)表示事件名(必須是常量),第二個(gè)參數(shù)是這個(gè)事件的回調(diào)函數(shù)。
也可以寫成如下的方式:
namespace backend\controllers; use yii\web\Controller; class EventController extends Controller { const TEST_EVENT = 'event'; public function init() { parent::init(); $this->on(self::TEST_EVENT,[$this,'onTest']); } public function onTest() { echo '這個(gè)一個(gè)事件測(cè)試。。。'; } public function actionIndex() { $this->trigger(self::TEST_EVENT); } }
$this表示的是本對(duì)象,‘onTest’指的是執(zhí)行的方法。事件綁定好后沒有調(diào)用還是沒用,此時(shí)用到y(tǒng)ii\base\Compontent類中的triggle方法來調(diào)用了。
事件的擴(kuò)展運(yùn)用(參數(shù)的傳入方法)
先定義一個(gè)控制器在里面定義加調(diào)用,如果想要傳入不同的參數(shù)就要用到 yii\base\Event 類了
class EventController extends Controller { const TEST_USER = 'email'; //發(fā)送郵件 public function init() { parent::init(); $msg = new Msg(); $this->on(self::TEST_USER,[$msg,'Ontest'],'參數(shù)Test'); } public function actionTest() { $msgEvent = new MsgEvent(); $msgEvent->dateTime = 'Test時(shí)間'; $msgEvent->author = 'Test作者'; $msgEvent->content = 'Test內(nèi)容'; $this->trigger(self::TEST_USER,$msgEvent); } }
class MsgEvent extends Event { public $dateTime; // 時(shí)間 public $author; // 作者 public $content; // 內(nèi)容 }
msg里面放的是調(diào)用的方法
class Msg extends ActiveRecord { public function onTest($event) //$event是yii\base\Event的對(duì)象 { print_r($event->author);//輸出'Test作者' print_r($event->dateTime);//輸出'Test時(shí)間' print_r($event->content);//輸出'Test內(nèi)容' print_r($event->data);//輸出'參數(shù)Test' } }
以上是“yii2.0如何綁定事件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。