获取Symfony2上每个监听器的列表

alv*_*mfg 10 php listener symfony

我希望得到一份清单,列出我的申请表上注册的每位听众以及他们的优先顺序.该列表应包含我自己的侦听器以及Symfony核心或其他已启用的捆绑包已注册的侦听器.

那可能吗?

谢谢

Sco*_*ack 9

如果您不想编写代码以在您的网站上显示它,您可以使用CLI:

php app/console debug:event-dispatcher
Run Code Online (Sandbox Code Playgroud)

  • 在较新版本的 Symfony 中,控制台将位于“bin/console”中 (3认同)

Ale*_* B. 7

您可以从容器中获取事件调度程序,并查看具有getListeners函数的事件.控制器中的示例

$evd = $this->get('event_dispatcher');
$listeners = $evd->getListeners();
Run Code Online (Sandbox Code Playgroud)

描述

/**
 * 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);
Run Code Online (Sandbox Code Playgroud)

小心,主义有自己的事件调度员.

/** @var $em EntityManager */
$em = $this->getDoctrine()->getManager();
$evd = $em->getEventManager();
$listeners = $evd->getListeners();
Run Code Online (Sandbox Code Playgroud)

  • 我发现很难从`getListeners`返回的数组中得到我想要的信息(sf 2.3).我最后编写了以下内容来解析它:``$ dispatcher = $ this-> get('event_dispatcher'); foreach($ dispatcher-> getListeners()as $ listeners){foreach($ listeners as $ listener); {foreach(监听者作为$ details){if(gettype($ details)=='string'){echo"($ details)"; echo'<br>'; } else {echo get_class($ details); }``` (2认同)