riddlestone/brokkr-graphql

基于Laminas的GraphQL集成

v0.2.1 2022-02-22 00:47 UTC

This package is auto-updated.

Last update: 2024-09-22 06:30:30 UTC


README

此模块提供了一个端点和插件管理器,以帮助开发基于Laminas的GraphQL解决方案。

端点

为GraphQL端点提供了一个占位符路由给路由器,名为graphql。可以使用路由配置来覆盖它。

# module config
return [
    'router' => [
        'routes' => [
            'graphql' => [
                'type' => 'literal',
                'options' => [
                    'route' => 'api/graphql'
                ],
            ],
        ],
    ],
];

类型

可以通过配置使用GraphQLTypeManager注册类型。

# module config
return [
    'graphql_types' => [
        'factories' => [
            'My\\TypeClass' => 'My\\TypeClassFactory',
        ],
    ],
];

或者您可以直接处理管理器。

use Laminas\ServiceManager\ServiceManager;
use Riddlestone\Brokkr\GraphQL\Types\GraphQLTypeManager;

/** @var ServiceManager $serviceManager */

/** @var GraphQLTypeManager $typeManager */
$typeManager = $serviceManager->get(GraphQLTypeManager::class);

$typeManager->setFactory('My\\TypeClass', 'My\\TypeClassFactory');

字段

可以通过GraphQLFieldManager注册字段,通过配置或直接注册。

# module config
return [
    'graphql_fields' => [
        'factories' => [
            'My\\FieldClass' => 'My\\FieldClassFactory',
        ],
    ],
];
use Laminas\ServiceManager\ServiceManager;
use Riddlestone\Brokkr\GraphQL\Fields\GraphQLFieldManager;

/** @var ServiceManager $serviceManager */

/** @var GraphQLFieldManager $fieldManager */
$fieldManager = $serviceManager->get(GraphQLFieldManager::class);

$fieldManager->setFactory('My\\FieldClass', 'My\\FieldClassFactory');

请注意,字段在使用时不需要注册,但作为根查询字段使用时需要注册。

为了使字段可以作为查询中的根元素使用,需要通过字段管理器配置为查询字段。

您可以使用数组键设置字段名。这在重复使用配置类来表示多个字段时很有用。

# module config
return [
    'graphql_fields' => [
        'query_fields' => [
            'field_classes' => 'My\\FieldClass',
        ],
    ],
];