Imbo\EventManager\EventManager::trigger PHP Method

trigger() public method

Trigger a given event
public trigger ( string $eventName, array $params = [] ) : EventManager
$eventName string The name of the event to trigger
$params array Extra parameters for the event
return EventManager
    public function trigger($eventName, array $params = [])
    {
        $event = clone $this->event;
        $event->setName($eventName);
        // Add optional extra arguments
        foreach ($params as $key => $value) {
            $event->setArgument($key, $value);
        }
        // Fetch current user
        $user = $event->getRequest()->getUser();
        // Trigger all listeners for this event and pass in the event instance
        foreach ($this->getListenersForEvent($eventName) as $listener) {
            $event->setArgument('handler', $listener['handler']);
            $callback = $this->getHandlerInstance($listener['handler']);
            if ($callback instanceof ListenerInterface) {
                $callback = [$callback, $listener['method']];
            }
            $users = $listener['users'];
            if (!$this->triggersFor($user, $users)) {
                continue;
            }
            $callback($event);
            if ($event->isPropagationStopped()) {
                break;
            }
        }
        return $this;
    }

Usage Example

Example #1
0
 /**
  * @covers Imbo\EventManager\EventManager::getHandlerInstance
  */
 public function testCanInjectParamsInConstructor()
 {
     $listenerClassName = __NAMESPACE__ . '\\Listener';
     $this->manager->addEventHandler('someHandler', $listenerClassName, array('param'));
     $this->manager->addCallbacks('someHandler', $listenerClassName::getSubscribedEvents());
     $this->expectOutputString('a:1:{i:0;s:5:"param";}');
     $this->manager->trigger('getParams');
 }
All Usage Examples Of Imbo\EventManager\EventManager::trigger