diff options
Diffstat (limited to 'vendor/sabre/event/lib/WildcardEmitterTrait.php')
-rw-r--r-- | vendor/sabre/event/lib/WildcardEmitterTrait.php | 119 |
1 files changed, 44 insertions, 75 deletions
diff --git a/vendor/sabre/event/lib/WildcardEmitterTrait.php b/vendor/sabre/event/lib/WildcardEmitterTrait.php index 7d8d62c26..206a8f3c5 100644 --- a/vendor/sabre/event/lib/WildcardEmitterTrait.php +++ b/vendor/sabre/event/lib/WildcardEmitterTrait.php @@ -1,9 +1,11 @@ -<?php declare (strict_types=1); +<?php + +declare(strict_types=1); namespace Sabre\Event; /** - * Wildcard Emitter Trait + * Wildcard Emitter Trait. * * This trait provides the implementation for WildCardEmitter * Refer to that class for the full documentation about this @@ -17,21 +19,19 @@ namespace Sabre\Event; * @author Evert Pot (http://evertpot.com/) * @license http://sabre.io/license/ Modified BSD License */ -trait WildcardEmitterTrait { - +trait WildcardEmitterTrait +{ /** * Subscribe to an event. - * - * @return void */ - function on(string $eventName, callable $callBack, int $priority = 100) { - - // If it ends with a wildcard, we use the wildcardListeners array - if ($eventName[\strlen($eventName) - 1] === '*') { + public function on(string $eventName, callable $callBack, int $priority = 100) + { + // If it ends with a wildcard, we use the wildcardListeners array + if ('*' === $eventName[\strlen($eventName) - 1]) { $eventName = \substr($eventName, 0, -1); - $listeners = & $this->wildcardListeners; + $listeners = &$this->wildcardListeners; } else { - $listeners = & $this->listeners; + $listeners = &$this->listeners; } // Always fully reset the listener index. This is fairly sane for most @@ -44,32 +44,27 @@ trait WildcardEmitterTrait { $listeners[$eventName] = []; } $listeners[$eventName][] = [$priority, $callBack]; - } /** * Subscribe to an event exactly once. - * - * @return void */ - function once(string $eventName, callable $callBack, int $priority = 100) { - + public function once(string $eventName, callable $callBack, int $priority = 100) + { $wrapper = null; - $wrapper = function() use ($eventName, $callBack, &$wrapper) { - + $wrapper = function () use ($eventName, $callBack, &$wrapper) { $this->removeListener($eventName, $wrapper); - return \call_user_func_array($callBack, \func_get_args()); + return \call_user_func_array($callBack, \func_get_args()); }; $this->on($eventName, $wrapper, $priority); - } /** * Emits an event. * - * This method will return true if 0 or more listeners were succesfully + * This method will return true if 0 or more listeners were successfully * handled. false is returned if one of the events broke the event chain. * * If the continueCallBack is specified, this callback will be called every @@ -87,42 +82,35 @@ trait WildcardEmitterTrait { * Lastly, if there are 5 event handlers for an event. The continueCallback * will be called at most 4 times. */ - function emit(string $eventName, array $arguments = [], callable $continueCallBack = null) : bool { - + public function emit(string $eventName, array $arguments = [], callable $continueCallBack = null): bool + { if (\is_null($continueCallBack)) { - foreach ($this->listeners($eventName) as $listener) { - $result = \call_user_func_array($listener, $arguments); - if ($result === false) { + if (false === $result) { return false; } } - } else { - $listeners = $this->listeners($eventName); $counter = \count($listeners); foreach ($listeners as $listener) { - - $counter--; + --$counter; $result = \call_user_func_array($listener, $arguments); - if ($result === false) { + if (false === $result) { return false; } if ($counter > 0) { - if (!$continueCallBack()) break; + if (!$continueCallBack()) { + break; + } } - } - } return true; - - } /** @@ -133,34 +121,27 @@ trait WildcardEmitterTrait { * * @return callable[] */ - function listeners(string $eventName) : array { - + public function listeners(string $eventName): array + { if (!\array_key_exists($eventName, $this->listenerIndex)) { - // Create a new index. $listeners = []; $listenersPriority = []; - if (isset($this->listeners[$eventName])) foreach ($this->listeners[$eventName] as $listener) { - - $listenersPriority[] = $listener[0]; - $listeners[] = $listener[1]; - + if (isset($this->listeners[$eventName])) { + foreach ($this->listeners[$eventName] as $listener) { + $listenersPriority[] = $listener[0]; + $listeners[] = $listener[1]; + } } foreach ($this->wildcardListeners as $wcEvent => $wcListeners) { - // Wildcard match if (\substr($eventName, 0, \strlen($wcEvent)) === $wcEvent) { - foreach ($wcListeners as $listener) { - $listenersPriority[] = $listener[0]; $listeners[] = $listener[1]; - } - } - } // Sorting by priority @@ -168,11 +149,9 @@ trait WildcardEmitterTrait { // Creating index $this->listenerIndex[$eventName] = $listeners; - } return $this->listenerIndex[$eventName]; - } /** @@ -181,14 +160,14 @@ trait WildcardEmitterTrait { * If the listener could not be found, this method will return false. If it * was removed it will return true. */ - function removeListener(string $eventName, callable $listener) : bool { - - // If it ends with a wildcard, we use the wildcardListeners array - if ($eventName[\strlen($eventName) - 1] === '*') { + public function removeListener(string $eventName, callable $listener): bool + { + // If it ends with a wildcard, we use the wildcardListeners array + if ('*' === $eventName[\strlen($eventName) - 1]) { $eventName = \substr($eventName, 0, -1); - $listeners = & $this->wildcardListeners; + $listeners = &$this->wildcardListeners; } else { - $listeners = & $this->listeners; + $listeners = &$this->listeners; } if (!isset($listeners[$eventName])) { @@ -196,21 +175,17 @@ trait WildcardEmitterTrait { } foreach ($listeners[$eventName] as $index => $check) { - if ($check[1] === $listener) { - // Remove listener unset($listeners[$eventName][$index]); // Reset index $this->listenerIndex = []; - return true; + return true; } - } return false; - } /** @@ -219,38 +194,32 @@ trait WildcardEmitterTrait { * If the eventName argument is specified, all listeners for that event are * removed. If it is not specified, every listener for every event is * removed. - * - * @return void */ - function removeAllListeners(string $eventName = null) { - + public function removeAllListeners(string $eventName = null) + { if (\is_null($eventName)) { $this->listeners = []; $this->wildcardListeners = []; - } else { - - if ($eventName[\strlen($eventName) - 1] === '*') { + if ('*' === $eventName[\strlen($eventName) - 1]) { // Wildcard event unset($this->wildcardListeners[\substr($eventName, 0, -1)]); } else { unset($this->listeners[$eventName]); } - } // Reset index $this->listenerIndex = []; - } /** - * The list of listeners + * The list of listeners. */ protected $listeners = []; /** - * The list of "wildcard listeners". + * The list of "wildcard listeners". */ protected $wildcardListeners = []; |