本文介绍使用PHP SDK的详细流程,包括安装和快速使用两部分。

安装

SDK使用composer安装。

composer require alibabacloud/fnf         

如果下载速度过慢,您可以切换composer镜像为国内镜像。

composer config repo.packagist composer https://mirrors.aliyun.com/composer/          

Alibaba Cloud SDK for PHP也会发布在https://github.com/aliyun/openapi-sdk-php。更多信息,请参见README-zh-CN

快速使用

在您开始之前,您需要注册阿里云账号并获取您的凭证。简单示例如下。

<?php

// 如果您在本地使用composer下载依赖并进行调试,请添加下述引用。
require 'vendor/autoload.php';

use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use AlibabaCloud\Fnf\Fnf;

// 设置全局客户端。
AlibabaCloud::accessKeyClient('foo', 'bar')
            ->regionId('cn-hangzhou')
            ->asDefaultClient();

try {
    // 访问产品APIs
    $request1 = Fnf::v20190315()->createFlow();

    // 设置选项或参数并执行请求。
    // 创建一个Flow。
    $result1 = $request1->withDefinition('xxx') // API的参数。
                                   ->withName('xxx')
                                   ->withRoleArn('xxx')
                                   ->withDescription('xxx')
                                   ->withType('FDL')
                                   //->scheme("https")
                                   //->client('client1') // 指定发送客户端,否则使用全局客户端。
                                   ->debug(true) // 开启调试会输出详细信息。
                                   ->connectTimeout(10) // 连接超时会抛出异常。
                                   ->timeout(10) // 超时会抛出异常。
                                   ->request(); // 执行请求。

    // 开始一个执行。
    // 下面示例展示了如何直接使用options传入SDK调用的相关参数。
    // 也可以参照$request1使用withxxx方式调用。
    $options = [
                   'debug'=>true,
                   'connect_timeout'=>10,
                   'timeout'=>10,
                   'form_params'=>[
                       'FlowName'=>'xxx',
                       'Input'=>'{"execID": "exe1"}',
                   ],
               ];

    $result2 = Fnf::v20190315()
                                   ->startExecution($options)
                                   ->options([
                                       'form_params'=>[
                                           'Input'=>'我会覆盖options中Input的这个参数值,格式需要为json',
                                       ],
                                   ])
                                   ->debug(false) // 最后调用的会覆盖前者。
                                   ->request();

    // 查询执行结果
    $request3 = Fnf::v20190315()->getExecutionHistory();

    // 设置选项或参数并执行请求
    // 创建一个Flow
    $result3 = $request3->withFlowName('xxx') // API的参数。
                                   ->withExecutionName('xxx')
                                   ->debug(true) // 开启调试会输出详细信息。
                                   ->connectTimeout(10) // 连接超时会抛出异常。
                                   ->timeout(10) // 超时会抛出异常。
                                   ->request(); // 执行请求。

} catch (ClientException $exception) {
    echo $exception->getMessage().PHP_EOL;
} catch (ServerException $exception) {
    echo $exception->getMessage().PHP_EOL;
    echo $exception->getErrorCode().PHP_EOL;
    echo $exception->getRequestId().PHP_EOL;
    echo $exception->getErrorMessage().PHP_EOL;
}