kayrunm/qule

一个用于在PHP应用程序中更干净地使用GraphQL的包。

1.0.0 2020-04-24 09:14 UTC

This package is auto-updated.

Last update: 2024-09-24 18:58:50 UTC


README

Qule 允许您将GraphQL查询封装成干净、无废话的类。

安装

composer require kayrunm/qule

创建第一个查询

在这些示例中,我们将设置Qule以与Shopify商店一起工作。

我们首先创建第一个查询类。所有查询类都必须扩展基类 Kayrunm\Qule\Query,该类提供了一些默认设置以帮助您开始。您可能需要重写的最主要属性是 methodendpointfile

<?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);
    });
}