Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Object Type

Object Types represent the probably most used primitive types in GraphQL applications. The hold a set of fields, where each field has it’s own type, which lays the foundation for building complex hierachies and systems.

In php-graphql object types are an instance of the GraphQLObjectType class, which are configured via the constructor.

/*
 * HINT: this code section is an excerpt of the books example in the 'examples/' folder
 *       and is not ment to work solely.
 */
$bookType = new GraphQLObjectType("Book", "The Book Type", function () use (&$authorType, &$bookCategoryType, &$authors, &$bookType, &$books) {
    return [
        new GraphQLTypeField(
            "id",
            new GraphQLNonNull(new GraphQLInt()),
            "ID of the Book"
        ),
        new GraphQLTypeField(
            "name",
            new GraphQLString(),
            "Name of the Book",
            function ($parent, $args, $context) {
                return ($args["prefix"] ?? "") . $parent["name"] . ($context["addOn"] ?? "");
            },
            [
                new GraphQLTypeFieldArgument("prefix", new GraphQLString())
            ]
        ),
        new GraphQLTypeField(
            "author",
            new GraphQLNonNull($authorType),
            "Author of the book",
            function ($parent, $args) use ($authors) {
                $index = array_search($parent["authorId"], array_column($authors, 'id'));
                return $authors[$index];
            }
        )
    ];
});

GraphQLObjectType Constructor

Parameters used for the GraphQLObjectType constructors are (in the following order):

Parameter Type Description Required
type string Name of the new type. Used for introspection. ☑️
description string Description of the new type. Used for introspection. ☑️
fields \Closure Function that returns an array of GraphQLTypeField. Is called as soon the fields are needed. Used during validation and execution. ☑️
interfaces array Array of GraphQLInterface that should be implemented.  
isTypeOfFn \Closure Function that returns wether an object or array is type of this object or not. Used during execution. If not passed, uses default resolver.  

GraphQLTypeField Constructor

A GraphQLTypeField is a field that can only be used in a field set e.g. in a GraphQLObjectType. Parameters used for the GraphQLTypeField constructors are (in the following order):

Parameter Type Description Required
id string Name of the new field. Used for introspection, validation and execution. ☑️
type GraphQLType The type of the new field. ☑️
description string Description of the new field. Used for introspection. ☑️
resolve \Closure Function whose signature looks like this function($parent, $args, $context, $info) {...}. It should resolve the field’s actual content based on the parameters. If not passed, uses default resolver.
args array Array of GraphQLFieldArgument that represent possible input arguments.  
defaultValue mixed The field’s default value (deprected).  
deprecationReason string If passed, the field is marked internally as deprected and the argument is stored as explanation.