|null $variableValues * @param string|null $operationName * @return array */ public static function execute(Schema $schema, $requestString, $rootValue = null, $contextValue = null, $variableValues = null, $operationName = null) { return self::executeAndReturnResult($schema, $requestString, $rootValue, $contextValue, $variableValues, $operationName)->toArray(); } /** * @param Schema $schema * @param $requestString * @param null $rootValue * @param null $variableValues * @param null $operationName * @return array|ExecutionResult */ public static function executeAndReturnResult(Schema $schema, $requestString, $rootValue = null, $contextValue = null, $variableValues = null, $operationName = null) { try { if ($requestString instanceof Document) { $documentAST = $requestString; } else { $source = new Source($requestString ?: '', 'GraphQL request'); $documentAST = Parser::parse($source); } /** @var QueryComplexity $queryComplexity */ $queryComplexity = DocumentValidator::getRule('QueryComplexity'); $queryComplexity->setRawVariableValues($variableValues); $validationErrors = DocumentValidator::validate($schema, $documentAST); if (!empty($validationErrors)) { return new ExecutionResult(null, $validationErrors); } else { return Executor::execute($schema, $documentAST, $rootValue, $contextValue, $variableValues, $operationName); } } catch (Error $e) { return new ExecutionResult(null, [$e]); } } /** * @return array */ public static function getInternalDirectives() { return array_values(Directive::getInternalDirectives()); } }