Example #1
0
 public function dispatchEvent(Event $event)
 {
     $eventType = $event->type();
     if (array_key_exists($eventType, $this->_listeners)) {
         /** @var Event */
         $event = $event->cloneEvent();
         $event->reset($this->getEventTarget());
         $eventHandlers =& $this->_listeners[$eventType];
         if (!$this->_sortings[$eventType]) {
             ksort($eventHandlers);
             $this->_sortings[$eventType] = true;
         }
         end($eventHandlers);
         do {
             $priority = key($eventHandlers);
             $priorityHandlers =& $eventHandlers[$priority];
             foreach ($priorityHandlers as $handler) {
                 if ($event->isPropagationStopped()) {
                     return;
                 }
                 $handler->apply($event);
             }
         } while (prev($eventHandlers) !== false);
         return true;
     }
     return false;
 }