아키텍처
아키텍처타입에 필드 등록하기

타입에 필드 등록하기

Gato GraphQL은 Publish-subscribe 패턴을 사용하여 필드를 타입에 「등록」합니다. 이 패턴에서는 FieldResolver 엔티티가 특정 TypeResolver 엔티티에 필드를 추가합니다.

이 예제에서 클래스 UserFieldResolver는 필드 username, email, url을 클래스 UserTypeResolver에 추가하며, UserTypeResolver는 타입 User를 처리합니다.

class UserFieldResolver extends AbstractDBDataFieldResolver
{
  public static function getClassesToAttachTo(): array
  {
    return [UserTypeResolver::class];
  }
 
  public static function getFieldNamesToResolve(): array
  {
    return [
      'username',
      'email',
      'url',
    ];
  }

User 타입은 어떤 필드를 처리할지 사전에 알고 있지 않습니다. username, email, url과 같은 필드는 field resolver에 의해 타입에 주입됩니다.

이와 같이 GraphQL 스키마는 쉽게 확장할 수 있습니다. field resolver를 추가하기만 하면 어떤 확장 기능이든 기존 타입에 새로운 필드를 추가하거나(예: 필드 User.shippingAddress 추가), 필드의 처리 방식을 재정의할 수 있습니다(예: User.url을 재정의하여 사용자의 웹사이트를 반환하도록 변경).