Type Definitions
April 25, 2022 ยท View on GitHub
graphql-php represents a type as a class instance from the GraphQL\Type\Definition namespace:
Input vs. Output Types
All types in GraphQL are of two categories: input and output.
Obviously, NonNull and List types belong to both categories depending on their inner type.
Definition styles
Several styles of type definitions are supported depending on your preferences.
Inline definitions
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\Type;
$myType = new ObjectType([
'name' => 'MyType',
'fields' => [
'id' => Type::id()
]
]);
Class per type
use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\Type;
class MyType extends ObjectType
{
public function __construct()
{
$config = [
// Note: 'name' is not needed in this form:
// it will be inferred from class name by omitting namespace and dropping "Type" suffix
'fields' => [
'id' => Type::id()
]
];
parent::__construct($config);
}
}
Schema definition language
schema {
query: Query
mutation: Mutation
}
type Query {
greetings(input: HelloInput!): String!
}
input HelloInput {
firstName: String!
lastName: String
}
Read more about building an executable schema using schema definition language.