mathsgod / graphql-php-loader
用于 webonyx graphql 的 PHP 加载器
1.0.0
2021-03-11 03:21 UTC
Requires
- webonyx/graphql-php: ^0.12.6
README
graphql-php-loader
用于生成 webonyx/graphql-php Schema 的简单加载器
用法
使用文件结构创建和设计 GraphQL 模式。
- 在您的文档根目录下创建一个名为 "graphql" 的文件夹。
- 在 "graphql" 文件夹中创建一个名为 "Query" 的文件夹。
- 现在您可以创建 Query 的字段
初始化
use GraphQL\Loader; use GraphQL\Type\Schema; $loader=new Loader(); $config = SchemaConfig::create() ->setQuery($loader->queryType()) ->setMutation($loader->mutationType()); $schema = new Schema($config);
示例
简单查询
在 "graphql/Query" 文件夹中创建一个名为 hello.php 的文件
graphql
+-- Query
| +-- hello.php
Query/hello.php
return [ "type"=>"String", "resolve"=>function($root,$args,$context){ return "world!"; } ];
这等价于构建以下模式
type Query{ hello:String }
自定义类型
如果您想使用自定义对象类型,只需在 graphql 文件夹中创建类型文件
graphql
+-- Query
| +-- me.php
+-- User.php
Query/me.php
return [ "type"=>"User", "resolve"=>function($root,$args,$context){ return $context->me; //return object } ];
User.php
return [ "fields"=>[ "first_name"=>"String", "last_name"=>"String" ] ];
这等价于构建以下模式
type Query{ me:User } type User{ first_name:String last_name:String }
自定义类型的字段
如果您想为自定义对象类型创建自定义字段,只需为自定义对象创建文件夹
示例
User 有多个电话号码
graphql/User.php
return [ "fields"=>[ "first_name"=>"String", "last_name"=>"String" ] ]; /* no need create phone in fields, by create file phone.php in User folder, it auto generate fields in User type */
在 "User" 文件夹中创建 phone.php
graphql/User/phone.php
return [ "type"=>"[String]", "resolve"=>function($user,$args,$context){ return $user->getPhones(); //return multi phone } ];
graphql
+-- Query
| +-- me.php
+-- User
| +-- phone.php
+-- User.php
这等价于构建以下模式
type Query{ me:User } type User{ first_name:String last_name:String phone:[String] }
子文件夹结构
graphql
+-- Query
| +-- User
| +-- list.php
| +-- Invoice
| +-- list.php
+-- User.php
+-- Invoice.php
现在您可以通过以下方式进行查询
query{ User{ list{ first_name last_name } } Invoice{ list{ invoice_no } } }