Yii2框架配置Alibaba Cloud SDK的方法和详细代码

Alibaba Cloud SDK for PHP 是支持产品快捷访问的开发包,由 Alibaba Cloud Client for PHP 提供底层支持。

发行说明

我们在 消除已知问题 和 兼容旧语法 的原则上开发了新内核,增加了如下特性:

  • 支持 Composer
  • 支持多客户端和客户端配置文件
  • 结果是一个强大的对象
  • 每一个请求配置更加灵活

环境要求

您的系统需要满足环境要求,包括 PHP> = 5.5。 我们强烈建议使用cURL扩展,并使用TLS后端编译cURL 7.16.2+。

安装依赖

如果在您的系统上全局安装Composer,您可以在项目目录中运行以下内容,将 Alibaba Cloud SDK for PHP 添加为依赖项:

composer require alibabacloud/sdk

请看 安装 有关通过 Composer 和其他方式安装的详细信息。

生成类映射 - 必须执行以下命令,否则无法使用。

composer dump-autoload --optimize

在 composer.json 中 config 部分设置 “optimize-autoloader”: true 可免执行 dump-autoload --optimize。

在线示例

API Explorer 提供在线调用阿里云产品,并动态生成 SDK 代码和快速检索接口等能力,能显著降低使用云 API 的难度。

快速使用

在您开始之前,您需要注册阿里云帐户并获取您的凭证。请求之前,请了解使用客户端,请求之后,请了解结果对象。

目前仅支持部分阿里云产品,已支持产品列表,对于没有支持的产品,您可使用 Alibaba Cloud Client for PHP 发起自定义请求,还可使用 API Explorer 在线生成 Alibaba Cloud Client for PHP 代码。

<?php

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

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

try {
    // 访问产品 APIs
    $request = AlibabaCloud::ecs()->v20140526()->describeRegions();
    
    // 设置选项/参数并执行请求
    $result = $request->withResourceType('type') // API 的参数
                      ->withInstanceChargeType('type') // API 的参数
                      ->client('client1') // 指定发送客户端,否则使用全局客户端
                      ->debug(true) // 开启调试会输出详细信息
                      ->connectTimeout(0.01) // 连接超时会抛出异常
                      ->timeout(0.01) // 超时会抛出异常
                      ->request(); // 执行请求
    
    // 也可以传入数组设置
    $options = [
                   'debug'           => true,
                   'connect_timeout' => 0.01,
                   'timeout'         => 0.01,
                   'query'           => [
                       'ResourceType' => 'type',
                       'InstanceChargeType' => 'type',
                   ],
               ];

    // 设置的优先级
    $result2 = AlibabaCloud::ecs()
                           ->v20140526()
                           ->describeRegions($options)
                           ->options([
                                         'query' => [
                                             'Key'      => '我会覆盖构造函数的这个值',
                                             'new'      => '我是新增的值',
                                         ],
                                     ])
                           ->options([
                                         'query' => [
                                             'Key' => '我会覆盖以前的值',
                                             'bar' => '我是新增的值',
                                         ],
                                     ])
                           ->debug(false) // 最后调用的会覆盖前者
                           ->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;
}

Yii2框架调用阿里云直播,查看 示例代码:

<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;

// Download:https://github.com/aliyun/openapi-sdk-php-client
// Usage:https://github.com/aliyun/openapi-sdk-php-client/blob/master/README-CN.md

AlibabaCloud::accessKeyClient('<accessKeyId>', '<accessSecret>')
                        ->regionId('cn-hangzhou') // replace regionId as you need
                        ->asGlobalClient();

try {
    $result = AlibabaCloud::rpcRequest()
                          ->product('live')
                          // ->scheme('https') // https | http
                          ->version('2016-11-01')
                          ->action('DescribeLiveStreamsOnlineList')
                          ->method('POST')
                          ->options([
                                        'query' => [
                                          'DomainName' => '直播域名',
                                          'AppName' => '直播appname',
                                        ],
                                    ])
                          ->request();
    print_r($result->toArray());
} catch (ClientException $e) {
    echo $e->getErrorMessage() . PHP_EOL;
} catch (ServerException $e) {
    echo $e->getErrorMessage() . PHP_EOL;
}

猜你喜欢

转载自blog.csdn.net/guo_qiangqiang/article/details/88975307