コード例 #1
0
 /**
  * {@inheritdoc}
  */
 public function trigger($event, $args = array())
 {
     if (!$event instanceof Event) {
         $event = new Event($event);
     }
     // If a listener group was specified
     // lazy load the listeners.
     if ($group = $event->getGroup()) {
         $this->dispatcher->addListeners($group);
     }
     $this->preProcess($event);
     $this->preTrigger($event);
     /*$e = $this->stopwatch->start($event->getName(), 'section');
     
     		$responses = $this->dispatcher->trigger($event, $args);
     
     		if ($e->isStarted())
     		{
     			$e->stop();
     		}*/
     // Attach any incoming aruments
     foreach ((array) $args as $name => $arg) {
         $event->addArgument($name, $arg);
     }
     foreach ($this->dispatcher->getListeners($event->getName()) as $listener) {
         // Call the event listener
         $response = $listener->trigger($event);
         // Attach response
         if (!is_null($response)) {
             $event->addResponse($response);
         }
         // Is propagation stopped?
         if ($event->isStopped()) {
             break;
         }
     }
     $this->postTrigger($event);
     $this->postProcess($event);
     return $event->getResponse();
 }
コード例 #2
0
 /**
  * Trigger an event.
  *
  * @param   mixed  $event  The event object or name.
  * @return  array  The event after being passed through all listeners.
  */
 public function trigger($event, $args = array())
 {
     if (!$event instanceof Event) {
         if (isset($this->events[$event])) {
             $event = $this->events[$event];
         } else {
             $event = new Event($event);
         }
     }
     // If a listener group was specified
     // lazy load the listeners.
     if ($group = $event->getGroup()) {
         $this->addListeners($group);
     }
     // Attach any incoming aruments
     foreach ((array) $args as $name => $arg) {
         $event->addArgument($name, $arg);
     }
     // Are there any listeners for this event?
     if (isset($this->listeners[$event->getName()])) {
         foreach ($this->listeners[$event->getName()] as $listener) {
             // Call the event listener
             if ($listener instanceof Closure) {
                 $response = call_user_func($listener, $event);
             } else {
                 $response = call_user_func(array($listener, $event->getName()), $event);
             }
             // Attach response
             if (!is_null($response)) {
                 $event->addResponse($response);
             }
             // Is propagation stopped?
             if ($event->isStopped()) {
                 break;
             }
         }
     }
     return $event->getResponse();
 }