toArray(); } if ($result instanceof Promise) { return $result->then(function(ExecutionResult $executionResult) { return $executionResult->toArray(); }); } throw new InvariantViolation("Unexpected execution result"); } /** * @param Schema $schema * @param $requestString * @param null $rootValue * @param null $variableValues * @param null $operationName * @return ExecutionResult|Promise */ public static function executeAndReturnResult(Schema $schema, $requestString, $rootValue = null, $contextValue = null, $variableValues = null, $operationName = null) { try { if ($requestString instanceof DocumentNode) { $documentNode = $requestString; } else { $source = new Source($requestString ?: '', 'GraphQL request'); $documentNode = Parser::parse($source); } /** @var QueryComplexity $queryComplexity */ $queryComplexity = DocumentValidator::getRule('QueryComplexity'); $queryComplexity->setRawVariableValues($variableValues); $validationErrors = DocumentValidator::validate($schema, $documentNode); if (!empty($validationErrors)) { return new ExecutionResult(null, $validationErrors); } else { return Executor::execute($schema, $documentNode, $rootValue, $contextValue, $variableValues, $operationName); } } catch (Error $e) { return new ExecutionResult(null, [$e]); } } /** * @return array */ public static function getInternalDirectives() { return array_values(Directive::getInternalDirectives()); } /** * @param PromiseAdapter|null $promiseAdapter */ public static function setPromiseAdapter(PromiseAdapter $promiseAdapter = null) { Executor::setPromiseAdapter($promiseAdapter); } }