Bläddra i källkod

[EventDispatcher] made order deterministic (first registered one stay first) -- this makes the new system more compatible with the old one

Fabien Potencier 14 år sedan
förälder
incheckning
59ac6313ad
1 ändrade filer med 4 tillägg och 1 borttagningar
  1. 4 1
      src/Symfony/Component/EventDispatcher/EventDispatcher.php

+ 4 - 1
src/Symfony/Component/EventDispatcher/EventDispatcher.php

@@ -192,7 +192,10 @@ class EventDispatcher implements EventDispatcherInterface
             $p = $this->priorities[$eventName];
 
             uasort($this->listeners[$eventName], function ($a, $b) use ($p) {
-                return $p[spl_object_hash($b)] - $p[spl_object_hash($a)];
+                $order = $p[spl_object_hash($b)] - $p[spl_object_hash($a)];
+
+                // for the same priority, force the first registered one to stay first
+                return 0 === $order ? 1 : $order;
             });
 
             $this->sorted[$eventName] = true;