事件(Events)
#事件是可以將自訂程式碼“注入”到現有程式碼中的特定執行點。 附加自訂程式碼到某個事件,當這個事件被觸發時,這些程式碼就會自動執行。 (建議學習:yii教學)
例如,郵件程式物件成功發出訊息時可觸發 messageSent 事件。如想追蹤成功傳送的訊息,可以附加對應追蹤程式碼到 messageSent 事件。
Yii 引入了名為 yii\base\Component 的基底類別以支援事件。 如果一個類別需要觸發事件就應該繼承 yii\base\Component 或其子類別。
事件處理器(Event Handlers)
事件處理器是一個PHP 回呼函數, 當它所附加到的事件被觸發時它就會執行。可以使用以下回呼函數之一:
字串形式指定的PHP 全域函數,如'trim' ;
物件名稱和方法名稱數組形式指定的物件方法,如[$object, $method] ;
類別名稱和方法名稱陣列形式指定的靜態類別方法,如[$class, $method] ;
匿名函數,如function ($event) { ... } 。
事件處理器的格式是:
function ($event) { // $event 是 yii\base\Event 或其子类的对象 }
透過$event 參數,事件處理器就獲得了以下有關事件的資訊:
event name:事件名稱
event sender:呼叫trigger() 方法的物件
custom data:附加事件處理器時傳入的數據,預設為空,後文詳述
附加事件處理器(Attaching Event Handlers)
#呼叫yii\base\Component::on() 方法來附加處理器到事件上。如:
$foo = new Foo; // 处理器是全局函数 $foo->on(Foo::EVENT_HELLO, 'function_name'); // 处理器是对象方法 $foo->on(Foo::EVENT_HELLO, [$object, 'methodName']); // 处理器是静态类方法 $foo->on(Foo::EVENT_HELLO, ['app\components\Bar', 'methodName']); // 处理器是匿名函数 $foo->on(Foo::EVENT_HELLO, function ($event) { //事件处理逻辑 });
以上是yii的事件是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!