【问题标题】:Getting a list with every listeners on Symfony2获取 Symfony2 上每个听众的列表
【发布时间】:2013-08-28 00:42:33
【问题描述】:

我想获得一个列表,其中包含在我的应用程序上注册的每个听众以及他们的优先级。该列表应该包含我自己的侦听器以及 Symfony 核心或其他启用的捆绑包也已注册的侦听器。

这可能吗?

谢谢

【问题讨论】:

    标签: php symfony listener


    【解决方案1】:

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

    php app/console debug:event-dispatcher
    

    【讨论】:

    • 在较新版本的 Symfony 中,控制台将位于 bin/console
    【解决方案2】:

    您可以从容器中获取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); } } } }
    猜你喜欢
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2021-06-19
    • 2013-04-12
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多