[英]Yii: Multiple events best practices
Yii的活動看起來不錯,但是晚上仍然有幾個問題使我驚醒:
如果我引發一個事件並在鏈中創建幾個PHP事件處理程序類,是否可以在它們之間傳遞不同的數據(如返回值)? 該活動是否為此目標而設計? 據我所知,該事件似乎是一種單向通知方式,並且將數據傳回並不常見,這是正確的嗎?
可以說:
我有3個處理程序: Handler1 , Handler2 , Handler3以此順序執行。 每個處理程序連接一些字符串數據。 我可以在處理程序之間傳遞串聯的字符串嗎?是否假定處理程序可以這樣做?
在事件鏈中,在事件處理程序中引發異常是一種好習慣嗎?
您是正確的,該事件系統主要是設計(或至少記錄在案)為只讀通知系統。 但是,可以通過創建自己的子類Event(它為要傳遞的數據定義一個公共屬性)來做您想做的事情。
例如,從一個自定義事件類開始:
class MyEvent extends \yii\base\Event
{
public $data;
}
觸發此事件:
$event = new MyEvent([
'data' => 'hello world'
]);
$this->trigger('myEvent', $event);
echo "After passing through the entire event chain, data is now: " . $event->data;
並添加監聽它的行為(或處理程序):
public function onMyEvent($event)
{
$event->data .= ', goodbye world';
}
如果一切順利,這應該以回聲hello world, goodbye world
告終
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.