簡體   English   中英

Yii:多個事件的最佳做法

[英]Yii: Multiple events best practices

Yii的活動看起來不錯,但是晚上仍然有幾個問題使我驚醒:

  • 如果我引發一個事件並在鏈中創建幾個PHP事件處理程序類,是否可以在它們之間傳遞不同的數據(如返回值)? 該活動是否為此目標而設計? 據我所知,該事件似乎是一種單向通知方式,並且將數據傳回並不常見,這是正確的嗎?

    可以說:

    我有3個處理程序: Handler1Handler2Handler3以此順序執行。 每個處理程序連接一些字符串數據。 我可以在處理程序之間傳遞串聯的字符串嗎?是否假定處理程序可以這樣做?

  • 在事件鏈中,在事件處理程序中引發異常是一種好習慣嗎?

您是正確的,該事件系統主要是設計(或至少記錄在案)為只讀通知系統。 但是,可以通過創建自己的子類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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM