
# 应用侧PHP SDK使用指南
物联网平台提供PHP语言的应用侧SDK供开发者使用。本文介绍应用侧 PHP SDK的安装和配置，及使用PHP SDK调用[应用侧API](https://support.huaweicloud.com/api-iothub/iot_06_v5_0001.html)的示例。
#### SDK获取和安装
1. 安装PHP开发环境。 
   访问[PHP官网](https://windows.php.net/download/)，下载并按说明安装PHP开发环境。
   ![](https://support.huaweicloud.com/sdkreference-iothub/public_sys-resources/note_3.0-zh-cn.png)
   华为云PHP SDK支持PHP 5.6、PHP6、PHP7、PHP8版本，在运行前可执行 php --version 检查当前 Php 的版本信息，如果安装了PHP其他语言的版本，运行PHP SDK可能会报错。
   
   
2. 安装composer 
   ```
   curl -sS https://getcomposer.org/installer | php
   ```
   
   
3. 安装PHP SDK 
   ```
   composer require huaweicloud/huaweicloud-sdk-php
   ```
   
   
4. 引入 Composer 的自动加载文件 
   ```
   require 'path/to/vendor/autoload.php';
   ```
   
   
 
#### 代码示例
以调用[查询设备列表](https://support.huaweicloud.com/api-iothub/iot_06_v5_0048.html)接口为例，以下代码示例向您展示使用PHP SDK的主要步骤：
1. 创建认证。
2. 创建IoTDAClient实例并初始化。
3. 实例化请求对象。
4. 调用查询设备列表接口。 
   ```
   <?php
   namespace HuaweiCloud\SDK\IoTDA\V5\Model;
   require_once "vendor/autoload.php";
   use HuaweiCloud\SDK\Core\Auth\BasicCredentials;
   use HuaweiCloud\SDK\Core\Http\HttpConfig;
   use HuaweiCloud\SDK\Core\Auth\Credentials;
   use HuaweiCloud\SDK\Core\Exceptions\ConnectionException;
   use HuaweiCloud\SDK\Core\Exceptions\RequestTimeoutException;
   use HuaweiCloud\SDK\Core\Exceptions\ServiceResponseException;
   use HuaweiCloud\SDK\Core\Region\Region;
   use HuaweiCloud\SDK\IoTDA\V5\IoTDAClient;
   // 认证用的ak和sk直接写到代码中有很大的安全风险，建议在配置文件或者环境变量中密文存放，使用时解密，确保安全；
   // 本示例以ak和sk保存在环境变量中为例，运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
   $ak = getenv('HUAWEICLOUD_SDK_AK');
   $sk = getenv('HUAWEICLOUD_SDK_SK');
   // endpoint：请在控制台的"总览"界面的"平台接入地址"中查看“应用侧”的https接入地址。
   // $endpoint = "https://iotda.cn-north-4.myhuaweicloud.com";
   $endpoint = "<YOUR ENDPOINT>";
   $projectId = "<YOUR PROJECT_ID>";
   // REGION_ID：如果是上海一，请填写"cn-east-3"；如果是北京四，请填写"cn-north-4";如果是华南广州，请填写"cn-south-1"
   $regionId = "<YOUR REGION ID>";
   // 创建认证
   $credential = new BasicCredentials($ak,$sk,$projectId);
   // 标准版/企业版需要使用衍生算法，基础版请删除配置"withDerivedPredicate"
   $credential->withDerivedPredicate(Credentials::getDefaultDerivedPredicate());
   // 修改默认配置，跳过服务端证书验证
   $config = HttpConfig::getDefaultConfig();
   $config->setIgnoreSslVerification(true);
   // 创建IoTDAClient实例并初始化（若默认配置无修改config可不添加）
   $client = IoTDAClient::newBuilder(new IoTDAClient)
     ->withHttpConfig($config)
     ->withEndpoint($endpoint)
     ->withCredentials($credential)
     ->withRegion(new Region($regionId, $endpoint))
     ->build();
   // 实例化请求对象
   $request = new ListDevicesRequest();
   try {
     // 调用查询设备列表接口
     $response = $client->ListDevices($request);
   } catch (ConnectionException $e) {
     $msg = $e->getMessage();
     echo "\n". $msg ."\n";
   } catch (RequestTimeoutException $e) {
     $msg = $e->getMessage();
     echo "\n". $msg ."\n";
   } catch (ServiceResponseException $e) {
     echo "\n";
     echo $e->getHttpStatusCode(). "\n";
     echo $e->getErrorCode() . "\n";
     echo $e->getErrorMsg() . "\n";
   }
   echo "\n";
   echo $response;
   ```
   
   | 参数        | 说明                                                                                                                                                                                                   |
   |:---|:---|
   | ak        | 您的华为云账号访问密钥ID（Access Key ID）。请在华为云控制台"我的凭证 \> 访问密钥"页面上创建和查看您的 AK/SK。更多信息请查看[访问密钥](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)。                                                    |
   | sk        | 您的华为云账号秘密访问密钥（Secret Access Key）。                                                                                                                                                                    |
   | endpoint  | 请替换为您要访问的华为云服务所在区域的终端节点。 您可以在控制台上查看当前服务所在区域名称，区域名称、区域和终端节点的对应关系，具体步骤[地区和终端节点](https://support.huaweicloud.com/devg-iothub/iot_02_1004.html#section0)。 |
   | projectId | 您要访问的华为云服务所在项目 ID ，根据您想操作的项目所属区域选择对应的项目 ID                                                                                                                                                           |
      
   
   
 
#### 更多
项目源码及更多详细的使用指导请参考[华为云开发者 PHP 软件开发工具包（PHP SDK）](https://github.com/huaweicloud/huaweicloud-sdk-php-v3/blob/master/README_CN.md)。
推荐您使用API在线调试工具[API Explorer](https://console.huaweicloud.com/apiexplorer/#/apidoc/IoTDA) ，API Explorer 支持快速调试和检索，调试API的同时，可以根据您的参数实时生成各种开发语言的SDK示例代码，方便您直接根据示例代码使用SDK。
