axtiva/flexible-graphql-federation

Schema SDL 首先的库,用于将 GraphQL SDL 代码生成 PHP 代码到 TypeRegistry,使用 webonyx/graphql-php 实现 Apollo Federation 属性

v1.0.0 2022-04-06 06:16 UTC

This package is auto-updated.

Last update: 2024-08-30 01:38:17 UTC


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);