src/Utility/TypeInfo.php
protected static function getFieldDefinition(Schema $schema, Type $parentType, Field $fieldAST)
    {
        $name = $fieldAST->get('name')->get('value');
        $schemaMeta = Introspection::schemaMetaFieldDefinition();
        if ($name === $schemaMeta->getName() && $schema->getQueryType() === $parentType) {
            return $schemaMeta;
        }

        $typeMeta = Introspection::typeMetaFieldDefinition();
        if ($name === $typeMeta->getName() && $schema->getQueryType() === $parentType) {
            return $typeMeta;
        }

        $typeNameMeta = Introspection::typeNameMetaFieldDefinition();
        if ($name === $typeNameMeta->getName() && ($parentType instanceof ObjectType || $parentType instanceof InterfaceType || $parentType instanceof UnionType)) {
            return $typeNameMeta;
        }

        if ($parentType instanceof ObjectType || $parentType instanceof InterfaceType) {
            $fields = $parentType->getFields();
            return isset($fields[$name]) ? $fields[$name] : NULL;
        }

        return NULL;
    }
protected static function getFieldDefinition(Schema $schema, Type $parentType, Field $fieldAST)
    {
        $name = $fieldAST->get('name')->get('value');
        $schemaMeta = Introspection::schemaMetaFieldDefinition();
        if ($name === $schemaMeta->getName() && $schema->getQueryType() === $parentType) {
            return $schemaMeta;
        }

        $typeMeta = Introspection::typeMetaFieldDefinition();
        if ($name === $typeMeta->getName() && $schema->getQueryType() === $parentType) {
            return $typeMeta;
        }

        $typeNameMeta = Introspection::typeNameMetaFieldDefinition();
        if ($name === $typeNameMeta->getName() && ($parentType instanceof ObjectType || $parentType instanceof InterfaceType || $parentType instanceof UnionType)) {
            return $typeNameMeta;
        }

        if ($parentType instanceof ObjectType || $parentType instanceof InterfaceType) {
            $fields = $parentType->getFields();
            return isset($fields[$name]) ? $fields[$name] : NULL;
        }

        return NULL;
    }
protected static function getFieldDefinition ( Schema $ schema , Type $ parentType , Field $ fieldAST ) { $ name = $ fieldAST -> get ( 'name' ) -> get ( 'value' ) ; $ schemaMeta = Introspection :: schemaMetaFieldDefinition ( ) ; if ( $ name === $ schemaMeta -> getName ( ) && $ schema -> getQueryType ( ) === $ parentType ) { return $ schemaMeta ; } $ typeMeta = Introspection :: typeMetaFieldDefinition ( ) ; if ( $ name === $ typeMeta -> getName ( ) && $ schema -> getQueryType ( ) === $ parentType ) { return $ typeMeta ; } $ typeNameMeta = Introspection :: typeNameMetaFieldDefinition ( ) ; if ( $ name === $ typeNameMeta -> getName ( ) && ( $ parentType instanceof ObjectType || $ parentType instanceof InterfaceType || $ parentType instanceof UnionType ) ) { return $ typeNameMeta ; } if ( $ parentType instanceof ObjectType || $ parentType instanceof InterfaceType ) { $ fields = $ parentType -> getFields ( ) ; return isset ( $ fields [ $ name ] ) ? $ fields [ $ name ] : NULL ; } return NULL ; }
Not exactly the same as the executor's definition of getFieldDef, in this
statically evaluated environment we do not always have an Object type,
and need to handle Interface and Union types.

@param Schema $schema
@param Type $parentType
@param Field $fieldAST

@return FieldDefinition
Not exactly the same as the executor s definition of getFieldDef in this statically evaluated environment we do not always have an Object type and need to handle Interface and Union types .