PHP SDK使用示例

更新时间:
复制 MD 格式

本文以 PHP SDK V2.0 为例,演示如何调用云监控2.0(cms20240330)OpenAPI。其他接口的调用方法类似,仅需替换 Request/Response 类型与字段。

环境要求

PHP 5.6 及以上。

安装方式

通过 Composer 安装:

composer require alibabacloud/cms-20240330 10.0.0

源码仓库:alibabacloud-sdk-php/cms-20240330

配置访问凭据

工程代码建议使用更安全的无 AK 方式,凭据配置方式请参见管理访问凭据。最简单的做法是在系统环境变量中配置:

export ALIBABA_CLOUD_ACCESS_KEY_ID="<your-access-key-id>"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="<your-access-key-secret>"

AlibabaCloud\Credentials\Credential 会按照默认凭据链顺序查找凭据。

完整代码示例

以下示例调用 GetCmsService 接口,查询云监控2.0服务对应产品的开通状态:

<?php

namespace AlibabaCloud\SDK\Sample;

use AlibabaCloud\SDK\Cms\V20240330\Cms;
use AlibabaCloud\Credentials\Credential;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Cms\V20240330\Models\GetCmsServiceRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;

class Sample {

    /**
     * 使用凭据初始化账号 Client
     * @return Cms Client
     */
    public static function createClient(){
        // 工程代码建议使用更安全的无 AK 方式。
        $credential = new Credential();
        $config = new Config([
            "credential" => $credential
        ]);
        // Endpoint 请参考 https://api.aliyun.com/product/Cms
        $config->endpoint = "metrics.cn-hangzhou.aliyuncs.com";
        return new Cms($config);
    }

    /**
     * @param string[] $args
     * @return void
     */
    public static function main($args){
        $client = self::createClient();
        $getCmsServiceRequest = new GetCmsServiceRequest([
            "product" => "your_value",
            "service" => "your_value"
        ]);
        $headers = [];
        try {
            $resp = $client->getCmsServiceWithOptions($getCmsServiceRequest, $headers, new RuntimeOptions([]));
            var_dump($resp->toMap());
        }
        catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            // 错误 message
            var_dump($error->message);
            // 诊断地址
            var_dump($error->data["Recommend"]);
        }
    }
}

$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main(array_slice($argv, 1));

步骤介绍

  1. 初始化配置对象 Darabonba\OpenApi\Models\Config。Config 对象存放 credential、endpoint 等配置,Endpoint 如示例中的 metrics.cn-hangzhou.aliyuncs.com

    use Darabonba\OpenApi\Models\Config;
    use AlibabaCloud\Credentials\Credential;
    
    $credential = new Credential();
    $config = new Config([
        "credential" => $credential
    ]);
    $config->endpoint = "metrics.cn-hangzhou.aliyuncs.com";
  2. 实例化客户端:

    use AlibabaCloud\SDK\Cms\V20240330\Cms;
    
    $client = new Cms($config);
  3. (可选)初始化 RuntimeOptions:

    use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
    
    $runtime = new RuntimeOptions();
    $runtime->maxIdleConns   = 3;
    $runtime->connectTimeout = 10000;
    $runtime->readTimeout    = 10000;
  4. 创建对应 API 的 Request:

    $request = new GetCmsServiceRequest();
  5. 设置请求参数:

    $request->product = "your_value";
    $request->service = "your_value";
  6. 通过 client 调用接口:

    $response = $client->getCmsService($request, $runtime);
    var_dump($response->toMap());
  7. 从 response 读取返回值,例如:

    var_dump($response->body->requestId);
  8. 错误处理:

    catch (Exception $error) {
        if (!($error instanceof TeaError)) {
            $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
        }
        var_dump($error->message);
        var_dump($error->data["Recommend"]);
    }

更多接口与示例代码可在 OpenAPI 门户 SDK 示例 查看。