Ver Fonte

[FrameworkBundle] fixed the traceable event manager

Fabien Potencier há 14 anos atrás
pai
commit
d02a700c06

+ 8 - 10
src/Symfony/Bundle/FrameworkBundle/Debug/TraceableEventManager.php

@@ -55,8 +55,8 @@ class TraceableEventDispatcher extends ContainerAwareEventDispatcher implements
         }
 
         $this->called[$eventName.'.'.$listenerString] = array(
-            'event'    => $eventName,
-            'listener' => $listenerString,
+            'class' => $listenerString,
+            'event' => $eventName,
         );
 
         if ($event->isPropagationStopped() && null !== $this->logger) {
@@ -91,15 +91,13 @@ class TraceableEventDispatcher extends ContainerAwareEventDispatcher implements
     public function getNotCalledListeners()
     {
         $notCalled = array();
-
-        foreach (array_keys($this->listeners) as $name) {
+        foreach (array_keys($this->getListeners()) as $name) {
             foreach ($this->getListeners($name) as $listener) {
                 $listener = $this->listenerToString($listener);
-
                 if (!isset($this->called[$name.'.'.$listener])) {
                     $notCalled[] = array(
-                        'event'    => $name,
-                        'listener' => $listener,
+                        'class' => $listener,
+                        'event' => $name,
                     );
                 }
             }
@@ -108,18 +106,18 @@ class TraceableEventDispatcher extends ContainerAwareEventDispatcher implements
         return $notCalled;
     }
 
-    protected function listenerToString($listener, $eventName)
+    protected function listenerToString($listener)
     {
         if (is_object($listener)) {
             if ($listener instanceof \Closure) {
                 return 'Closure';
             }
 
-            return get_class($listener).'::'.$eventName;
+            return get_class($listener);
         }
 
         if (is_array($listener)) {
-            return is_object($listener[0]) ? sprintf('%s::%s', get_class($listener[0]), $listener[1]) : implode('::', $listener);
+            return is_object($listener[0]) ? get_class($listener[0]) : implode('::', $listener);
         }
     }
 }

+ 3 - 5
src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/events.html.twig

@@ -12,15 +12,13 @@
 
     <table>
         <tr>
+            <th>Class</th>
             <th>Event</th>
-            <th>Caller</th>
-            <th>Listener</th>
         </tr>
         {% for elements in collector.calledlisteners %}
             <tr>
+                <td><code>{{ elements.class|abbr_class }}</code></td>
                 <td><code>{{ elements.event }}</code></td>
-                <td><code>{{ elements.caller|abbr_class }}</code></td>
-                <td><code>{{ elements.listener|abbr_method }}</code></td>
             </tr>
         {% endfor %}
     </table>
@@ -35,8 +33,8 @@
             </tr>
             {% for elements in collector.notcalledlisteners %}
                 <tr>
+                    <td><code>{{ elements.class|abbr_class }}</code></td>
                     <td><code>{{ elements.event }}</code></td>
-                    <td><code>{{ elements.listener|abbr_method }}</code></td>
                 </tr>
             {% endfor %}
         </table>