diff options
Diffstat (limited to 'vendor/zendframework/zend-eventmanager/src/SharedEventManager.php')
-rw-r--r-- | vendor/zendframework/zend-eventmanager/src/SharedEventManager.php | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/vendor/zendframework/zend-eventmanager/src/SharedEventManager.php b/vendor/zendframework/zend-eventmanager/src/SharedEventManager.php deleted file mode 100644 index 40fae74..0000000 --- a/vendor/zendframework/zend-eventmanager/src/SharedEventManager.php +++ /dev/null @@ -1,176 +0,0 @@ -<?php -/** - * Zend Framework (http://framework.zend.com/) - * - * @link http://github.com/zendframework/zf2 for the canonical source repository - * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) - * @license http://framework.zend.com/license/new-bsd New BSD License - */ - -namespace Zend\EventManager; - -use Zend\Stdlib\CallbackHandler; -use Zend\Stdlib\PriorityQueue; - -/** - * Shared/contextual EventManager - * - * Allows attaching to EMs composed by other classes without having an instance first. - * The assumption is that the SharedEventManager will be injected into EventManager - * instances, and then queried for additional listeners when triggering an event. - */ -class SharedEventManager implements - SharedEventAggregateAwareInterface, - SharedEventManagerInterface -{ - /** - * Identifiers with event connections - * @var array - */ - protected $identifiers = array(); - - /** - * Attach a listener to an event - * - * Allows attaching a callback to an event offered by one or more - * identifying components. As an example, the following connects to the - * "getAll" event of both an AbstractResource and EntityResource: - * - * <code> - * $sharedEventManager = new SharedEventManager(); - * $sharedEventManager->attach( - * array('My\Resource\AbstractResource', 'My\Resource\EntityResource'), - * 'getAll', - * function ($e) use ($cache) { - * if (!$id = $e->getParam('id', false)) { - * return; - * } - * if (!$data = $cache->load(get_class($resource) . '::getOne::' . $id )) { - * return; - * } - * return $data; - * } - * ); - * </code> - * - * @param string|array $id Identifier(s) for event emitting component(s) - * @param string $event - * @param callable $callback PHP Callback - * @param int $priority Priority at which listener should execute - * @return CallbackHandler|array Either CallbackHandler or array of CallbackHandlers - */ - public function attach($id, $event, $callback, $priority = 1) - { - $ids = (array) $id; - $listeners = array(); - foreach ($ids as $id) { - if (!array_key_exists($id, $this->identifiers)) { - $this->identifiers[$id] = new EventManager($id); - } - $listeners[] = $this->identifiers[$id]->attach($event, $callback, $priority); - } - if (count($listeners) > 1) { - return $listeners; - } - return $listeners[0]; - } - - /** - * Attach a listener aggregate - * - * Listener aggregates accept an EventManagerInterface instance, and call attachShared() - * one or more times, typically to attach to multiple events using local - * methods. - * - * @param SharedListenerAggregateInterface $aggregate - * @param int $priority If provided, a suggested priority for the aggregate to use - * @return mixed return value of {@link ListenerAggregateInterface::attachShared()} - */ - public function attachAggregate(SharedListenerAggregateInterface $aggregate, $priority = 1) - { - return $aggregate->attachShared($this, $priority); - } - - /** - * Detach a listener from an event offered by a given resource - * - * @param string|int $id - * @param CallbackHandler $listener - * @return bool Returns true if event and listener found, and unsubscribed; returns false if either event or listener not found - */ - public function detach($id, CallbackHandler $listener) - { - if (!array_key_exists($id, $this->identifiers)) { - return false; - } - return $this->identifiers[$id]->detach($listener); - } - - /** - * Detach a listener aggregate - * - * Listener aggregates accept a SharedEventManagerInterface instance, and call detachShared() - * of all previously attached listeners. - * - * @param SharedListenerAggregateInterface $aggregate - * @return mixed return value of {@link SharedListenerAggregateInterface::detachShared()} - */ - public function detachAggregate(SharedListenerAggregateInterface $aggregate) - { - return $aggregate->detachShared($this); - } - - /** - * Retrieve all registered events for a given resource - * - * @param string|int $id - * @return array - */ - public function getEvents($id) - { - if (!array_key_exists($id, $this->identifiers)) { - //Check if there are any id wildcards listeners - if ('*' != $id && array_key_exists('*', $this->identifiers)) { - return $this->identifiers['*']->getEvents(); - } - return false; - } - return $this->identifiers[$id]->getEvents(); - } - - /** - * Retrieve all listeners for a given identifier and event - * - * @param string|int $id - * @param string|int $event - * @return false|PriorityQueue - */ - public function getListeners($id, $event) - { - if (!array_key_exists($id, $this->identifiers)) { - return false; - } - return $this->identifiers[$id]->getListeners($event); - } - - /** - * Clear all listeners for a given identifier, optionally for a specific event - * - * @param string|int $id - * @param null|string $event - * @return bool - */ - public function clearListeners($id, $event = null) - { - if (!array_key_exists($id, $this->identifiers)) { - return false; - } - - if (null === $event) { - unset($this->identifiers[$id]); - return true; - } - - return $this->identifiers[$id]->clearListeners($event); - } -} |