Skip to content

Commit 611a4a2

Browse files
committed
[FrameworkBundle] allowed a service to register a kernel listener more than once for a given event
1 parent df81296 commit 611a4a2

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/Symfony/Bundle/FrameworkBundle/ContainerAwareEventDispatcher.php

+6-5
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public function addListenerService($eventName, $callback, $priority = 0)
6868
throw new \InvalidArgumentException('Expected an array("service", "method") argument');
6969
}
7070

71-
$this->listenerIds[$eventName][$callback[0].'::'.$callback[1]] = array($callback[0], $callback[1], $priority);
71+
$this->listenerIds[$eventName][] = array($callback[0], $callback[1], $priority);
7272
}
7373

7474
/**
@@ -86,14 +86,15 @@ public function dispatch($eventName, Event $event = null)
8686
list($serviceId, $method, $priority) = $args;
8787
$listener = $this->container->get($serviceId);
8888

89-
if (!isset($this->listeners[$eventName][$serviceId])) {
89+
$key = $serviceId.$method;
90+
if (!isset($this->listeners[$eventName][$key])) {
9091
$this->addListener($eventName, array($listener, $method), $priority);
91-
} elseif ($listener !== $this->listeners[$eventName][$serviceId]) {
92-
$this->removeListener($eventName, array($this->listeners[$eventName][$serviceId], $method));
92+
} elseif ($listener !== $this->listeners[$eventName][$key]) {
93+
$this->removeListener($eventName, array($this->listeners[$eventName][$key], $method));
9394
$this->addListener($eventName, array($listener, $method), $priority);
9495
}
9596

96-
$this->listeners[$eventName][$serviceId] = $listener;
97+
$this->listeners[$eventName][$key] = $listener;
9798
}
9899
}
99100

0 commit comments

Comments
 (0)