繁体   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