예제 #1
0
 /**
  * Registers a command handler
  *
  * @param string         $commandClass The full command class name
  * @param CommandHandler $handler      The command handler
  *
  * @return void
  *
  * @throws InvalidCommandException When the command class is not valid
  */
 public function registerHandler($commandClass, CommandHandler $handler)
 {
     if (!Test::implementsInterface($commandClass, Command::class)) {
         $message = sprintf('Invalid command class: %s', $commandClass);
         throw InvalidCommandException::create($message);
     }
     $type = Type::create($commandClass)->toString();
     $this->handlers[$type] = $handler;
 }
예제 #2
0
 /**
  * Registers a query handler
  *
  * @param string       $queryClass The full query class name
  * @param QueryHandler $handler    The query handler
  *
  * @return void
  *
  * @throws InvalidQueryException When the query class is not valid
  */
 public function registerHandler($queryClass, QueryHandler $handler)
 {
     if (!Test::implementsInterface($queryClass, Query::class)) {
         $message = sprintf('Invalid query class: %s', $queryClass);
         throw InvalidQueryException::create($message);
     }
     $type = Type::create($queryClass)->toString();
     $this->handlers[$type] = $handler;
 }
 /**
  * Registers a responder
  *
  * @param string    $actionClass The full action class name
  * @param Responder $responder   The responder
  *
  * @return void
  *
  * @throws LogicException When the action class is not valid
  */
 public function registerResponder($actionClass, Responder $responder)
 {
     if (!Test::implementsInterface($actionClass, Action::class)) {
         $message = sprintf('Invalid action class: %s', $actionClass);
         throw new LogicException($message);
     }
     $type = Type::create($actionClass)->toString();
     $this->responders[$type] = $responder;
 }