final protected function getTypeFromReturnTypeHint(ReflectionMethod $method, string $fieldName): ?Type
    {
        $returnType = $method->getReturnType();
        if (!$returnType) {
            return null;
        }

        $returnTypeName = (string) $returnType;
        if (is_a($returnTypeName, Collection::class, true) || $returnTypeName === 'array') {
            $targetEntity = $this->getTargetEntity($fieldName);
            if (!$targetEntity) {
                throw new Exception('The method ' . $this->getMethodFullName($method) . ' is type hinted with a return type of `' . $returnTypeName . '`, but the entity contained in that collection could not be automatically detected. Either fix the type hint, fix the doctrine mapping, or specify the type with `@API\Field` annotation.');
            }

            $type = Type::listOf($this->getTypeFromRegistry($targetEntity, false));
            if (!$returnType->allowsNull()) {
                $type = Type::nonNull($type);
            }

            return $type;
        }

        return $this->reflectionTypeToType($returnType);
    }
final protected function getTypeFromReturnTypeHint(ReflectionMethod $method, string $fieldName): ?Type
    {
        $returnType = $method->getReturnType();
        if (!$returnType) {
            return null;
        }

        $returnTypeName = (string) $returnType;
        if (is_a($returnTypeName, Collection::class, true) || $returnTypeName === 'array') {
            $targetEntity = $this->getTargetEntity($fieldName);
            if (!$targetEntity) {
                throw new Exception('The method ' . $this->getMethodFullName($method) . ' is type hinted with a return type of `' . $returnTypeName . '`, but the entity contained in that collection could not be automatically detected. Either fix the type hint, fix the doctrine mapping, or specify the type with `@API\Field` annotation.');
            }

            $type = Type::listOf($this->getTypeFromRegistry($targetEntity, false));
            if (!$returnType->allowsNull()) {
                $type = Type::nonNull($type);
            }

            return $type;
        }

        return $this->reflectionTypeToType($returnType);
    }
final protected function getTypeFromReturnTypeHint ( ReflectionMethod $ method , string $ fieldName ) : ? Type { $ returnType = $ method -> getReturnType ( ) ; if ( ! $ returnType ) { return null ; } $ returnTypeName = ( string ) $ returnType ; if ( is_a ( $ returnTypeName , Collection :: class , true ) || $ returnTypeName === 'array' ) { $ targetEntity = $ this -> getTargetEntity ( $ fieldName ) ; if ( ! $ targetEntity ) { throw new Exception ( 'The method ' . $ this -> getMethodFullName ( $ method ) . ' is type hinted with a return type of `' . $ returnTypeName . '`, but the entity contained in that collection could not be automatically detected. Either fix the type hint, fix the doctrine mapping, or specify the type with `@API\Field` annotation.' ) ; } $ type = Type :: listOf ( $ this -> getTypeFromRegistry ( $ targetEntity , false ) ) ; if ( ! $ returnType -> allowsNull ( ) ) { $ type = Type :: nonNull ( $ type ) ; } return $ type ; } return $ this -> reflectionTypeToType ( $ returnType ) ; }
Get a GraphQL type instance from PHP type hinted type, possibly looking up the content of collections

@param ReflectionMethod $method
@param string $fieldName

@throws Exception

@return null|Type
Get a GraphQL type instance from PHP type hinted type possibly looking up the content of collections