我正在学习Symfony,但我不了解Dispatch自定义活动
什么时候我必须派遣活动?在控制器里面?
我必须重复这段代码
// the order is somehow created or retrieved
$order = new Order();
// ...
// create the FilterOrderEvent and dispatch it
$event = new FilterOrderEvent($order);
$dispatcher->dispatch(StoreEvents::STORE_ORDER, $event);
AnyTime我想要一个活动吗?
In this Example发送此事件有什么好处?
答案 0 :(得分:2)
您可以随时调度事件 - 在控制器,dataProvider或您有权访问EventDispatcher
的任何其他位置。
如symfony
doc中所述:
Symfony EventDispatcher组件实现了Mediator模式 以简单有效的方式使所有这些事情成为可能 使您的项目真正可扩展。
使用events
的好处是您的控制器类(或任何其他发送事件)与实际事件处理完全分离。您可以将其视为“火与忘”,这意味着您只是发送一个事件 - 谁将会做什么以及将要做什么不是您的业务。
在您的示例中,您只需添加订单和调度事件。当有人为您的系统编写插件时,他/她将只添加该事件的监听器并以他/她的方式处理它 - 例如发送添加订单的电子邮件或重新索引搜索引擎。请注意,您可以向同一事件添加多个事件侦听器。
详细了解Mediator模式