private static function getGraphqlType(GQL\Type $typeAnnotation, array $classAnnotations, array $properties, array $methods, string $namespace, string $currentValue)
    {
        $typeConfiguration = [];

        $fields = self::getGraphqlFieldsFromAnnotations($namespace, $properties, false, false, $currentValue);
        $fields = self::getGraphqlFieldsFromAnnotations($namespace, $methods, false, true, $currentValue) + $fields;

        $typeConfiguration['fields'] = $fields;
        $typeConfiguration = self::getDescriptionConfiguration($classAnnotations) + $typeConfiguration;

        if ($typeAnnotation->interfaces) {
            $typeConfiguration['interfaces'] = $typeAnnotation->interfaces;
        }

        if ($typeAnnotation->resolveField) {
            $typeConfiguration['resolveField'] = self::formatExpression($typeAnnotation->resolveField);
        }

        if ($typeAnnotation->builders && \count($typeAnnotation->builders) > 0) {
            $typeConfiguration['builders'] = \array_map(function ($fieldsBuilderAnnotation) {
                return ['builder' => $fieldsBuilderAnnotation->builder, 'builderConfig' => $fieldsBuilderAnnotation->builderConfig];
            }, $typeAnnotation->builders);
        }

        $publicAnnotation = self::getFirstAnnotationMatching($classAnnotations, 'Overblog\GraphQLBundle\Annotation\IsPublic');
        if ($publicAnnotation) {
            $typeConfiguration['fieldsDefaultPublic'] = self::formatExpression($publicAnnotation->value);
        }

        $accessAnnotation = self::getFirstAnnotationMatching($classAnnotations, 'Overblog\GraphQLBundle\Annotation\Access');
        if ($accessAnnotation) {
            $typeConfiguration['fieldsDefaultAccess'] = self::formatExpression($accessAnnotation->value);
        }

        return ['type' => $typeAnnotation->isRelay ? 'relay-mutation-payload' : 'object', 'config' => $typeConfiguration];
    }
private static function getGraphqlType(GQL\Type $typeAnnotation, array $classAnnotations, array $properties, array $methods, string $namespace, string $currentValue)
    {
        $typeConfiguration = [];

        $fields = self::getGraphqlFieldsFromAnnotations($namespace, $properties, false, false, $currentValue);
        $fields = self::getGraphqlFieldsFromAnnotations($namespace, $methods, false, true, $currentValue) + $fields;

        $typeConfiguration['fields'] = $fields;
        $typeConfiguration = self::getDescriptionConfiguration($classAnnotations) + $typeConfiguration;

        if ($typeAnnotation->interfaces) {
            $typeConfiguration['interfaces'] = $typeAnnotation->interfaces;
        }

        if ($typeAnnotation->resolveField) {
            $typeConfiguration['resolveField'] = self::formatExpression($typeAnnotation->resolveField);
        }

        if ($typeAnnotation->builders && \count($typeAnnotation->builders) > 0) {
            $typeConfiguration['builders'] = \array_map(function ($fieldsBuilderAnnotation) {
                return ['builder' => $fieldsBuilderAnnotation->builder, 'builderConfig' => $fieldsBuilderAnnotation->builderConfig];
            }, $typeAnnotation->builders);
        }

        $publicAnnotation = self::getFirstAnnotationMatching($classAnnotations, 'Overblog\GraphQLBundle\Annotation\IsPublic');
        if ($publicAnnotation) {
            $typeConfiguration['fieldsDefaultPublic'] = self::formatExpression($publicAnnotation->value);
        }

        $accessAnnotation = self::getFirstAnnotationMatching($classAnnotations, 'Overblog\GraphQLBundle\Annotation\Access');
        if ($accessAnnotation) {
            $typeConfiguration['fieldsDefaultAccess'] = self::formatExpression($accessAnnotation->value);
        }

        return ['type' => $typeAnnotation->isRelay ? 'relay-mutation-payload' : 'object', 'config' => $typeConfiguration];
    }
private static function getGraphqlType ( GQL \ Type $ typeAnnotation , array $ classAnnotations , array $ properties , array $ methods , string $ namespace , string $ currentValue ) { $ typeConfiguration = [ ] ; $ fields = self :: getGraphqlFieldsFromAnnotations ( $ namespace , $ properties , false , false , $ currentValue ) ; $ fields = self :: getGraphqlFieldsFromAnnotations ( $ namespace , $ methods , false , true , $ currentValue ) + $ fields ; $ typeConfiguration [ 'fields' ] = $ fields ; $ typeConfiguration = self :: getDescriptionConfiguration ( $ classAnnotations ) + $ typeConfiguration ; if ( $ typeAnnotation -> interfaces ) { $ typeConfiguration [ 'interfaces' ] = $ typeAnnotation -> interfaces ; } if ( $ typeAnnotation -> resolveField ) { $ typeConfiguration [ 'resolveField' ] = self :: formatExpression ( $ typeAnnotation -> resolveField ) ; } if ( $ typeAnnotation -> builders && \ count ( $ typeAnnotation -> builders ) > 0 ) { $ typeConfiguration [ 'builders' ] = \ array_map ( function ( $ fieldsBuilderAnnotation ) { return [ 'builder' => $ fieldsBuilderAnnotation -> builder , 'builderConfig' => $ fieldsBuilderAnnotation -> builderConfig ] ; } , $ typeAnnotation -> builders ) ; } $ publicAnnotation = self :: getFirstAnnotationMatching ( $ classAnnotations , 'Overblog\GraphQLBundle\Annotation\IsPublic' ) ; if ( $ publicAnnotation ) { $ typeConfiguration [ 'fieldsDefaultPublic' ] = self :: formatExpression ( $ publicAnnotation -> value ) ; } $ accessAnnotation = self :: getFirstAnnotationMatching ( $ classAnnotations , 'Overblog\GraphQLBundle\Annotation\Access' ) ; if ( $ accessAnnotation ) { $ typeConfiguration [ 'fieldsDefaultAccess' ] = self :: formatExpression ( $ accessAnnotation -> value ) ; } return [ 'type' => $ typeAnnotation -> isRelay ? 'relay-mutation-payload' : 'object' , 'config' => $ typeConfiguration ] ; }
Create a GraphQL Type configuration from annotations on class, properties and methods.

@param GQL\Type $typeAnnotation
@param array    $classAnnotations
@param array    $properties
@param array    $methods
@param string   $namespace
@param string   $currentValue

@return array
Create a GraphQL Type configuration from annotations on class properties and methods .