Created
August 17, 2011 08:26
-
-
Save m4rw3r/1151088 to your computer and use it in GitHub Desktop.
Diff to remove the need of sorting the list before calls
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/Evenement/EventEmitter.php b/src/Evenement/EventEmitter.php | |
index 5b8d00c..8207aaf 100644 | |
--- a/src/Evenement/EventEmitter.php | |
+++ b/src/Evenement/EventEmitter.php | |
@@ -29,21 +29,16 @@ namespace Evenement; | |
class EventEmitter | |
{ | |
private $listeners = array(); | |
- private $modified = array(); | |
public function on($event, $listener) | |
{ | |
if (!is_callable($listener)) { | |
throw new \InvalidArgumentException('The provided listener was not a valid callable.'); | |
} | |
- | |
- if (!isset($this->listeners[$event])) { | |
- $this->listeners[$event] = array(); | |
- } | |
- | |
+ | |
+ empty($this->listeners[$event]) && $this->listeners[$event] = array(); | |
+ | |
$this->listeners[$event][] = $listener; | |
- | |
- $this->modified[$event] = true; | |
} | |
public function removeListener($event, $listener) | |
@@ -62,27 +57,18 @@ class EventEmitter | |
public function listeners($event) | |
{ | |
- if (!isset($this->listeners[$event])) { | |
- return array(); | |
- } | |
- | |
- $this->sortListenersEventIfModified($event); | |
- | |
- return $this->listeners[$event]; | |
+ return empty($this->listeners[$event]) ? array() : $this->listeners[$event]; | |
} | |
public function emit($event, array $arguments = array()) | |
{ | |
- foreach ($this->listeners($event) as $listener) { | |
- call_user_func_array($listener, $arguments); | |
+ if(empty($this->listeners[$event])) | |
+ { | |
+ return; | |
} | |
- } | |
- | |
- private function sortListenersEventIfModified($event) | |
- { | |
- if ($this->modified[$event]) { | |
- krsort($this->listeners[$event]); | |
- unset($this->modified[$event]); | |
+ | |
+ foreach ($this->listeners[$event] as $listener) { | |
+ call_user_func_array($listener, $arguments); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment