kayrunm / qule
一个用于在PHP应用程序中更干净地使用GraphQL的包。
1.0.0
2020-04-24 09:14 UTC
Requires
- php: ^7.2
- ext-json: *
- guzzlehttp/guzzle: ~6.0
Requires (Dev)
- phpunit/phpunit: ^8.0
README
Qule 允许您将GraphQL查询封装成干净、无废话的类。
安装
composer require kayrunm/qule
创建第一个查询
在这些示例中,我们将设置Qule以与Shopify商店一起工作。
我们首先创建第一个查询类。所有查询类都必须扩展基类 Kayrunm\Qule\Query
,该类提供了一些默认设置以帮助您开始。您可能需要重写的最主要属性是 method
、endpoint
和 file
。
<?php use Kayrunm\Qule\Query; class GetCustomers extends Query { protected $method = 'POST'; protected $endpoint = 'graphql.json'; protected $file = 'get-customers'; }
现在,您需要设置Qule本身。Qule需要两个参数才能启动:一个Guzzle客户端:它负责底层请求;以及存储您的GraphQL查询的目录的路径。
在设置Guzzle客户端时,您需要设置 base_uri
以及任何所需的身份验证。之后,只需创建一个新的 Qule
实例,包含您的客户端和查询路径,您就几乎可以开始进行第一个查询了。
$client = new \GuzzleHttp\Client([ 'base_uri' => 'https://qule.myshopify.com/admin/2020-01/', 'headers' => [ 'X-Shopify-Access-Token' => 'abcdef1234567890', ], ]); $qule = new \Kayrunm\Qule\Qule($client, base_path('resources/queries/'));
最后,来到重点。要执行查询,只需调用Qule的 query
方法并传递您要运行的查询的实例,然后它将返回一个包含从API获取的数据的 Response
类。
$response = $qule->query(new GetCustomers);
Response
类仅是对Guzzle响应的包装,它会自动解码API的响应。您可以直接访问解码的对象,就像访问属性一样,如下所示
$firstCustomer = $response->data->shop->customers->edges[0];
传递变量
在传递查询变量时,您只需将参数作为Qule的 query
方法的第二个参数传递,如下所示
$qule->query(new GetCustomersBySurname, [ 'surname' => 'Marshall' ]);
Laravel
在Laravel中,您可以在服务提供程序中这样做,以便可以使用依赖注入避免每次想要使用Qule时都进行设置
use Kayrunm\Qule\Qule; // ... public function register() { $this->app->singleton(Qule::class, function () { $client = new \GuzzleHttp\Client([ 'base_uri' => 'https://qule.myshopify.com/admin/2020-01/', 'headers' => ['X-Shopify-Access-Token' => 'abcdef1234567890'], ]); return new \Kayrunm\Qule\Qule($client); }); }