viewer = DataSource::findUser('1'); // simulated "currently logged-in user" $appContext->rootUrl = 'http://localhost:8080'; $appContext->request = $_REQUEST; // Parse incoming query and variables if (isset($_SERVER['CONTENT_TYPE']) && strpos($_SERVER['CONTENT_TYPE'], 'application/json') !== false) { $raw = file_get_contents('php://input') ?: ''; $data = json_decode($raw, true); // $data += will cause 'Unsupported operand types' Fatal error on `null` // check if decoded data is an array (or stdobject) - not null // if any kind of data is present we don't want to lose it if ($data === null) { $data = []; } } else { $data = $_REQUEST; } $data += ['query' => null, 'variables' => null]; if (null === $data['query']) { $data['query'] = '{hello}'; } // GraphQL schema to be passed to query executor: $schema = new Schema([ 'query' => Types::query() ]); $result = GraphQL::executeQuery( $schema, $data['query'], null, $appContext, (array) $data['variables'] ); $output = $result->toArray($debug); $httpStatus = 200; } catch (\Exception $error) { $httpStatus = 500; $output['errors'] = [ FormattedError::createFromException($error, $debug) ]; } header('Content-Type: application/json', true, $httpStatus); echo json_encode($output);