mirror of
https://github.com/retailcrm/graphql-php.git
synced 2025-02-11 18:19:23 +03:00
36 lines
1.1 KiB
PHP
36 lines
1.1 KiB
PHP
|
<?php
|
||
|
namespace GraphQL;
|
||
|
|
||
|
use GraphQL\Executor\Executor;
|
||
|
use GraphQL\Language\Parser;
|
||
|
use GraphQL\Language\Source;
|
||
|
use GraphQL\Validator\DocumentValidator;
|
||
|
|
||
|
class GraphQL
|
||
|
{
|
||
|
/**
|
||
|
* @param Schema $schema
|
||
|
* @param $requestString
|
||
|
* @param mixed $rootObject
|
||
|
* @param array <string, string>|null $variableValues
|
||
|
* @param string|null $operationName
|
||
|
* @return array
|
||
|
*/
|
||
|
public static function execute(Schema $schema, $requestString, $rootObject = null, $variableValues = null, $operationName = null)
|
||
|
{
|
||
|
try {
|
||
|
$source = new Source($requestString ?: '', 'GraphQL request');
|
||
|
$ast = Parser::parse($source);
|
||
|
$validationResult = DocumentValidator::validate($schema, $ast);
|
||
|
|
||
|
if (empty($validationResult['isValid'])) {
|
||
|
return ['errors' => $validationResult['errors']];
|
||
|
} else {
|
||
|
return Executor::execute($schema, $rootObject, $ast, $operationName, $variableValues);
|
||
|
}
|
||
|
} catch (\Exception $e) {
|
||
|
return ['errors' => Error::formatError($e)];
|
||
|
}
|
||
|
}
|
||
|
}
|