Exemplo n.º 1
0
 /**
  * Call all handlers for a given event
  *
  * Note: if a handler returns boolean false, any remaining handlers are skipped
  * @param sndsgd\Event|string $event An event, or a type/namespace combo
  * @param array.<string,mixed> $data Data to add to the event
  * @return boolean
  * @return boolean:false A handler returned false
  * @return boolean:true All handlers returned true or no handlers exist
  * @throws InvalidArgumentException If the event isn't a string
  */
 public function fire($event, array $data = [])
 {
     if (is_string($event)) {
         $event = new Event($event);
         $event->setData($data);
     } else {
         if ($event instanceof Event) {
             if ($data) {
                 $event->addData($data);
             }
         } else {
             throw new InvalidArgumentException("invalid value provided for 'event'; " . "expecting an event name as string");
         }
     }
     $type = $event->getType();
     $namespace = $event->getNamespace();
     foreach ($this->eventHandlers as $handler) {
         if ($handler->canHandle($type, $namespace) && $handler->handle($event) === false) {
             return false;
         }
     }
     return true;
 }
Exemplo n.º 2
0
 /**
  * Set the verbosity for debug messages
  * 
  * @param sndsgd\Event $ev An event fired when the field was parsed
  * @return void
  */
 public static function setVerboseLevel(Event $ev)
 {
     $flag = $ev->getData('name');
     $values = ['quiet' => Env::QUIET, 'verbose' => Env::V, 'v' => Env::V, 'vv' => Env::VV, 'vvv' => Env::VVV];
     Env::setVerboseLevel($values[$flag]);
 }
Exemplo n.º 3
0
 /**
  * Create a new event handler
  *
  * @param string $event The type/namespace combo for an event
  */
 public function __construct($event, callable $handler)
 {
     list($this->type, $this->namespace) = Event::split($event);
     $this->handler = $handler;
 }