axtiva / flexible-graphql-federation
Schema SDL 首先的库,用于将 GraphQL SDL 代码生成 PHP 代码到 TypeRegistry,使用 webonyx/graphql-php 实现 Apollo Federation 属性
v1.0.0
2022-04-06 06:16 UTC
Requires
- php: ^7.4 | ^8.0
- axtiva/flexible-graphql-php: ^1.0.3
- axtiva/graphql-federation-extension: ^1.0.1
Requires (Dev)
- phpunit/phpunit: ^9.5
README
axtiva/flexible-graphql-php 的扩展,用于支持 Apollo Federation 在 PHP 实现 SDL 首代码生成。
安装
composer require axtiva/flexible-graphql-federation
集成到 axtiva/flexible-graphql-php
<?php require_once __DIR__ . '/vendor/autoload.php'; use Axtiva\FlexibleGraphql\Builder\Foundation\CodeGeneratorBuilder; use Axtiva\FlexibleGraphql\Utils\SchemaBuilder; use Axtiva\FlexibleGraphql\Generator\Config\Foundation\Psr4\CodeGeneratorConfig; use Axtiva\FlexibleGraphql\Generator\Config\Foundation\Psr4\FieldResolverGeneratorConfig; use Axtiva\FlexibleGraphql\Federation\Generator\Model\Foundation\Psr4\_EntitiesResolverGenerator; use Axtiva\FlexibleGraphql\Federation\Generator\Model\Foundation\Psr4\_ServiceResolverGenerator; use Axtiva\FlexibleGraphql\Federation\Generator\Config\Foundation\Psr4\FederationRepresentationResolverGeneratorConfig; use Axtiva\FlexibleGraphql\Federation\Generator\model\Foundation\Psr4\FederationRepresentationResolverGenerator; use Axtiva\FlexibleGraphql\FederationExtension\FederationSchemaExtender; $namespace = 'Axtiva\FlexibleGraphql\Example\GraphQL'; $dir = __DIR__ . '/GraphQL'; $mainConfig = new CodeGeneratorConfig($dir, CodeGeneratorConfig::V7_4, $namespace); $builder = new CodeGeneratorBuilder($mainConfig); $fieldResolverConfig = new FieldResolverGeneratorConfig($mainConfig); $representationConfig = new FederationRepresentationResolverGeneratorConfig($mainConfig); $builder->addFieldResolverGenerator(new _EntitiesResolverGenerator($fieldResolverConfig)); $builder->addFieldResolverGenerator(new _ServiceResolverGenerator($fieldResolverConfig)); $builder->addModelGenerator(new FederationRepresentationResolverGenerator($representationConfig)); $generator = $builder->build(); $schema = FederationSchemaExtender::build(SchemaBuilder::build('/path/to/schema.graphql')); foreach ($generator->generateAllTypes($schema) as $filename);