自定义类型
自定义类型可以理解为一种复合类型。
定义方式
只要继承于 smilecc\think\Support\ObjectType 即可轻松定义一个自定义类型 。
<?php
namespace app\http\graph\User;
use \smilecc\think\Support\Types;
use \smilecc\think\Support\ObjectType;
class UserType extends ObjectType
{
    public function attrs()
    {
        return [
            'name' => 'UserType',
            'desc' => '用户类型'
        ];
    }
    public function fields()
    {
        return [
            'id' => Types::id(),
            'nickname' => Types::string()
        ];
    }
}
定义类型之后只需要在 /config/graph.php 的 types 中注册该类型的class即可。
<?php
return [
    'types' => [
        'user' => \app\http\graph\User\UserType::class
    ]
];
随后就可以通过类型注册表来使用它了。
<?php
namespace app\http\graph;
use \smilecc\think\Support\Types;
use \smilecc\think\Support\ObjectType;
class GraphType extends ObjectType
{
    public function attrs()
    {
        return [
            'name' => 'GraphType',
            'desc' => ''
        ];
    }
    public function fields()
    {
        return [
            // 刚才注册的UserType
            'user' => Types::user()
        ];
    }
}