123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- <?php
-
-
- namespace Doctrine\Common;
-
- use Doctrine\Common\Events\Event;
-
-
- class EventManager
- {
-
-
- private $_listeners = array();
-
-
-
- public function dispatchEvent($eventName, EventArgs $eventArgs = null)
- {
- if (isset($this->_listeners[$eventName])) {
- $eventArgs = $eventArgs === null ? EventArgs::getEmptyInstance() : $eventArgs;
-
- foreach ($this->_listeners[$eventName] as $listener) {
- $listener->$eventName($eventArgs);
- }
- }
- }
-
-
-
- public function getListeners($event = null)
- {
- return $event ? $this->_listeners[$event] : $this->_listeners;
- }
-
-
-
- public function hasListeners($event)
- {
- return isset($this->_listeners[$event]) && $this->_listeners[$event];
- }
-
-
-
- public function addEventListener($events, $listener)
- {
-
- $hash = spl_object_hash($listener);
-
- foreach ((array) $events as $event) {
-
-
- $this->_listeners[$event][$hash] = $listener;
- }
- }
-
-
-
- public function removeEventListener($events, $listener)
- {
-
- $hash = spl_object_hash($listener);
-
- foreach ((array) $events as $event) {
-
- if (isset($this->_listeners[$event][$hash])) {
- unset($this->_listeners[$event][$hash]);
- }
- }
- }
-
-
-
- public function addEventSubscriber(EventSubscriber $subscriber)
- {
- $this->addEventListener($subscriber->getSubscribedEvents(), $subscriber);
- }
- }
|