Przeglądaj źródła

[FrameworkBundle] Changed TraceableEventDispatcher to log calls to event listeners _before_ actually calling them

Arnout Boks 14 lat temu
rodzic
commit
9d8e6f677e

+ 2 - 2
src/Symfony/Bundle/FrameworkBundle/Debug/TraceableEventDispatcher.php

@@ -71,8 +71,6 @@ class TraceableEventDispatcher extends ContainerAwareEventDispatcher implements
     protected function doDispatch($listeners, $eventName, Event $event)
     {
         foreach ($listeners as $listener) {
-            call_user_func($listener, $event);
-
             $info = $this->getListenerInfo($listener, $eventName);
 
             if (null !== $this->logger) {
@@ -81,6 +79,8 @@ class TraceableEventDispatcher extends ContainerAwareEventDispatcher implements
 
             $this->called[$eventName.'.'.$info['pretty']] = $info;
 
+            call_user_func($listener, $event);
+
             if ($event->isPropagationStopped()) {
                 if (null !== $this->logger) {
                     $this->logger->debug(sprintf('Listener "%s" stopped propagation of the event "%s".', $info['pretty'], $eventName));