riddlestone / brokkr-graphql
基于Laminas的GraphQL集成
v0.2.1
2022-02-22 00:47 UTC
Requires
- php: 7.4.*
- laminas/laminas-mvc-middleware: ^2.0
- laminas/laminas-router: ^3.4
- webonyx/graphql-php: ^14.9
Requires (Dev)
- laminas/laminas-test: ^3.5
- vimeo/psalm: ^4.21
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', ], ], ];