Example #1
0
 /**
  * Trigger an event.
  *
  * @param   EventInterface|string $event The event object or name.
  * @param   array                 $args  The arguments to set in event.
  *
  * @return  EventInterface  The event after being passed through all listeners.
  *
  * @since   2.0
  */
 public function triggerEvent($event, $args = array())
 {
     if (!$event instanceof EventInterface) {
         if (isset($this->events[$event])) {
             $event = $this->events[$event];
         } else {
             $event = new Event($event);
         }
     }
     $arguments = array_merge($event->getArguments(), $args);
     $event->setArguments($arguments);
     if (isset($this->listeners[$event->getName()])) {
         foreach ($this->listeners[$event->getName()] as $listener) {
             if ($event->isStopped()) {
                 return $event;
             }
             if (is_callable($listener)) {
                 call_user_func($listener, $event);
             } else {
                 call_user_func(array($listener, $event->getName()), $event);
             }
         }
     }
     return $event;
 }