validator = $validator; } /** * @param object $command * @param callable $next * * @return mixed * * @throws InvalidCommandException */ public function execute($command, callable $next) { $constraintViolations = $this->validator->validate($command); if (count($constraintViolations) > 0) { throw InvalidCommandException::onCommand($command, $constraintViolations); } return $next($command); } }