【发布时间】:2019-09-18 14:33:08
【问题描述】:
假设我有一个标记有多个命名事件的 EventListener,或者一个订阅多个事件的 EventSubscriber,我如何在我的处理程序方法中确定哪些订阅的事件触发了处理程序?
在 sylius 中,所有资源事件都使用 Generic Event 类(的后代)。
我可以看到事件名称不包含在事件类中,那么我如何确定哪些订阅的事件导致处理程序运行?
public static function getSubscribedEvents()
{
return [
'sylius.order.post_complete' => 'dispatchMessage',
'sylius.customer.post_register' => 'dispatchMessage',
];
}
更新:我知道在这种情况下我可以调用 get_class($event->getSubject()) 并且至少知道我正在处理哪个资源,但是我正在寻找一个更通用的解决方案,可以在任何 symfony 项目中工作。
【问题讨论】:
-
你可以使用 Symfony Profiler 并打开 Events 选项卡
-
@Dr.X 这可能有助于调试,但不是我可以在我的代码中“在我的处理程序方法内”使用的东西来决定采取哪些操作。
标签: symfony events sylius sylius-resource