[英]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.