Architectuur
ArchitectuurVelden aan types koppelen

Velden aan types koppelen

Gato GraphQL gebruikt het Publish-subscribe-patroon om velden te "koppelen" aan types, waarbij een FieldResolver-entiteit velden toevoegt aan een TypeResolver-entiteit.

In dit voorbeeld voegt de klasse UserFieldResolver de velden username, email en url toe aan de klasse UserTypeResolver, die het type User oplost:

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

Het type User weet van tevoren niet welke velden het zal ondersteunen, maar deze (username, email en url) worden in plaats daarvan door de field resolver aan het type toegevoegd.

Op deze manier wordt het GraphQL-schema eenvoudig uitbreidbaar: door simpelweg een field resolver toe te voegen, kan elke extensie nieuwe velden aan een bestaand type toevoegen (zoals het veld User.shippingAddress), of de manier waarop een veld wordt opgelost overschrijven (zoals User.url herdefiniƫren om de website van de gebruiker terug te geven).