【发布时间】:2013-08-28 00:42:33
【问题描述】:
我想获得一个列表,其中包含在我的应用程序上注册的每个听众以及他们的优先级。该列表应该包含我自己的侦听器以及 Symfony 核心或其他启用的捆绑包也已注册的侦听器。
这可能吗?
谢谢
【问题讨论】:
我想获得一个列表,其中包含在我的应用程序上注册的每个听众以及他们的优先级。该列表应该包含我自己的侦听器以及 Symfony 核心或其他启用的捆绑包也已注册的侦听器。
这可能吗?
谢谢
【问题讨论】:
如果您不想编写代码将其显示在您的网站上,您可以使用 CLI:
php app/console debug:event-dispatcher
【讨论】:
bin/console
您可以从容器中获取event dispatcher 并使用getListeners 函数查看事件。控制器中的示例
$evd = $this->get('event_dispatcher');
$listeners = $evd->getListeners();
说明
/**
* Gets the listeners of a specific event or all listeners.
*
* @param string $eventName The name of the event
*
* @return array The event listeners for the specified event, or all event listeners by event name
*/
public function getListeners($eventName = null);
小心,学说有自己的事件调度器。
/** @var $em EntityManager */
$em = $this->getDoctrine()->getManager();
$evd = $em->getEventManager();
$listeners = $evd->getListeners();
【讨论】:
getListeners 返回的数组(sf 2.3)中获取我想要的信息。我最终写了以下内容来解析它:$dispatcher = $this->get('event_dispatcher'); foreach ($dispatcher->getListeners() as $listeners) { foreach ($listeners as $listener); { foreach (listener as $details) { if (gettype($details) == 'string') { echo " ($details)"; echo '<br>'; } else { echo get_class($details); } } } }