diff --git a/examples/00-hello-world/README.md b/examples/00-hello-world/README.md new file mode 100644 index 0000000..d4dded2 --- /dev/null +++ b/examples/00-hello-world/README.md @@ -0,0 +1,18 @@ +# Hello world +Clean and simple single-file example of main GraphQL concepts originally proposed and +implemented by [Leo Cavalcante](https://github.com/leocavalcante) + +### Run locally +``` +php -S localhost:8080 ./graphql.php +``` + +### Try query +``` +curl http://localhost:8080 -d "query { echo(message: \"Hello World\") }" +``` + +### Try mutation +``` +curl http://localhost:8080 -d "mutation { sum(x: 2, y: 2) }" +``` diff --git a/examples/00-hello-world/graphql.php b/examples/00-hello-world/graphql.php new file mode 100644 index 0000000..1d799c8 --- /dev/null +++ b/examples/00-hello-world/graphql.php @@ -0,0 +1,61 @@ + 'Query', + 'fields' => [ + 'echo' => [ + 'type' => Type::string(), + 'args' => [ + 'message' => ['type' => Type::string()], + ], + 'resolve' => function ($root, $args) { + return $root['prefix'].$args['message']; + } + ], + ], + ]); + + $mutationType = new ObjectType([ + 'name' => 'Calc', + 'fields' => [ + 'sum' => [ + 'type' => Type::int(), + 'args' => [ + 'x' => ['type' => Type::int()], + 'y' => ['type' => Type::int()], + ], + 'resolve' => function ($root, $args) { + return $args['x'] + $args['y']; + }, + ], + ], + ]); + + $schema = new Schema([ + 'query' => $queryType, + 'mutation' => $mutationType, + ]); + + $rawInput = file_get_contents('php://input'); + + $rootValue = ['prefix' => 'You said: ']; + $result = GraphQL::execute($schema, $rawInput, $rootValue); +} catch (\Exception $e) { + $result = [ + 'error' => [ + 'message' => $e->getMessage() + ] + ]; +} +header('Content-Type: application/json; charset=UTF-8'); +echo json_encode($result); +