Skip to content

Instantly share code, notes, and snippets.

@m4rw3r
Created August 17, 2011 08:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save m4rw3r/1151088 to your computer and use it in GitHub Desktop.
Save m4rw3r/1151088 to your computer and use it in GitHub Desktop.
Diff to remove the need of sorting the list before calls
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