diff --git a/src/Illuminate/Events/Dispatcher.php b/src/Illuminate/Events/Dispatcher.php index ede7ebe64017..31bacfef45f7 100755 --- a/src/Illuminate/Events/Dispatcher.php +++ b/src/Illuminate/Events/Dispatcher.php @@ -305,10 +305,16 @@ protected function sortListeners($eventName) $listeners = isset($this->listeners[$eventName]) ? $this->listeners[$eventName] : []; - if (class_exists($eventName, false)) { + if (class_exists($eventName)) { foreach (class_implements($eventName) as $interface) { if (isset($this->listeners[$interface])) { - $listeners = array_merge_recursive($listeners, $this->listeners[$interface]); + foreach ($this->listeners[$interface] as $priority => $names) { + if (isset($listeners[$priority])) { + $listeners[$priority] = array_merge($listeners[$priority], $names); + } else { + $listeners[$priority] = $names; + } + } } } }