nascom/teamleader-api-client

连接到 Teamleader API 的 PHP 客户端

v2.0.0-RC6 2021-12-16 10:39 UTC

README

更新的 API 客户端目前正在 v2 分支 上开发

TeamleaderApiClient

PHP 客户端,用于连接到 Teamleader API

安装

此软件包可通过 composer 获取

$ composer require nascom/teamleader-api-client

基本用法

设置

首先,您需要提供一个可以执行 HTTP 请求的客户端。它必须实现 HttpClientInterface。该软件包中已提供使用 Guzzle 的客户端。这需要安装 guzzlehttp/guzzle

<?php

use Nascom\TeamleaderApiClient\Http\HttpClient\GuzzleHttpClient;

$guzzle = new \GuzzleHttp\Client(['base_uri' => 'https://www.teamleader.be/api/']);
$httpClient = new GuzzleHttpClient($guzzle);

您可以使用此 HttpClient 实例化实际的 API 客户端。您还需要提供您的 Teamleader API 凭据。

<?php

use Nascom\TeamleaderApiClient\Http\ApiClient\ApiClient;

$teamleaderParameters = [
    'api_group' => '12345',
    'api_secret' => 'XXXXXXXXXXXXXXX'
];

$client = new ApiClient(
    $httpClient, // A client implementing HttpClientInterface.
    $teamleaderParameters // An array containing the Teamleader credentials.
);

发送请求

每个 API 端点都有一个相应的 Request 类。这些类必须传递给客户端的 handle() 方法,该方法将返回一个 Response 对象。所有可用的请求都可以在这里找到 这里

例如,以下是如何获取项目详情的示例

<?php

use Nascom\TeamleaderApiClient\Request\Project\RetrieveProjectRequest;

$projectRequest = new RetrieveProjectRequest(23);
$response = $client->handle($projectRequest);

echo $response->getData(); // Returns the Teamleader JSON response as a string.

高级功能

提供额外选项

可以传递额外的选项到 ApiClient。这些选项将与一些默认选项合并,并在请求时传递给 HttpClient。

<?php

$client = new ApiClient(
    $httpClient,
    $teamleaderParameters,
    ['connect_timeout' => 5.0] // This will override the default timeout.
);

创建自定义 HttpClient

您可以创建自定义 HttpClient 来处理请求。它只需实现 HttpClientInterface 即可。例如,您可以实现一个使用 curl 的客户端。

<?php

use Nascom\TeamleaderApiClient\Http\HttpClient\HttpClientInterface;

class CurlHttpClient implements HttpClientInterface
{
    public function request($method, $uri, array $options = [])
    {
        $curl = curl_init();

        curl_setopt_array($curl, array(
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_URL => 'https://www.teamleader.be/api/' . $uri,
            CURLOPT_POST => 1,
            CURLOPT_POSTFIELDS => $options['form_params']
        ));

        $response = curl_exec($curl);
        curl_close($curl);

        return $response;
    }
}

$client = new ApiClient(
    new CurlHttpCLient(),
    $teamleaderParameters
);