Graphql Php:类类型定义与模式语言

时间:2018-09-02 14:11:09

标签: php oop graphql graphql-php

使用webonyx/graphql-php是Graphql的新功能。

使用类样式定义与graphql提供的语法来定义我的架构有什么好处?

我有一个使用类样式架构def的基本工作示例,如下所示:

use MyApp\Type\MediaType;
use MyApp\TypeRegistry;

use GraphQL\Type\Definition\ObjectType;
use GraphQL\Type\Definition\Type;

class MusicType extends ObjectType {

    public function __construct() {
        $config = [
            'fields' => [
                'id' => Type::id(),
                'name' => Type::String(),
                'url' => Type::String(),
                'dateStart' => Type::String(),
                'dateEnd' => Type::String()
            ],
            'interfaces' => [
                TypeRegistry::media(),
                TypeRegistry::dateRestricted(),
            ]
        ];
        parent::__construct($config);
    }
}

但是,我发现以这种方式定义架构很笨拙,唯一真正的好处就是可以在与架构相同的位置定义解析器。

使用schema.graphqls语法看起来更简洁,并且更容易移植到其他服务器端语言...

type Music implements Media {
    id: ID!
    name: String!
    url: String!
    dateStart: String
    dateEnd: String
}

使用类样式定义与graphql提供的语法来定义我的架构有什么好处?

1 个答案:

答案 0 :(得分:0)

在我看来,Type语言样式更加紧凑和易读。我仍然必须了解如何使用该库为联合类型和接口编写解析器,无论如何,它们应该是等效的。