自定义类型

自定义类型可以理解为一种复合类型。

定义方式

只要继承于 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.phptypes 中注册该类型的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()
        ];
    }
}