АрхитектураПодписка полей на типы
Подписка полей на типы
Gato GraphQL использует паттерн «Публикация-подписка», чтобы поля были «подписаны» на типы: сущность FieldResolver добавляет поля к некоторой сущности TypeResolver.
В этом примере класс UserFieldResolver добавляет поля username, email и url к классу 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, чтобы оно возвращало сайт пользователя).
Prev