全部产品
Search
文档中心

事件总线EventBridge:PHP SDK使用手册

更新时间:Nov 01, 2023

本文介绍了PHP SDK的安装方法、示例代码以及如何使用PHP SDK发布事件。

SDK简介

事件总线EventBridge的SDK分为管控API SDK和数据API SDK,示例代码有所不同。

  • 管控API SDK:对控制台页面进行操作使用的SDK。

  • 数据API SDK:事件数据的通道,目前只有发送事件(PutEvents)属于此类。

前提条件

您已完成以下操作:

环境准备

  • 环境要求

    • 安装PHP 5.6及以上版本。更多信息,请参见安装PHP

    • 安装Composer。更多信息,请参见安装Composer

  • 查看语言版本

    执行命令php -v查看PHP语言版本。

管控API SDK

安装SDK

执行以下命令安装PHP SDK。

composer require alibabacloud/eventbridge-20200401 1.0.0

SDK示例

您可以在OpenAPI门户通过调用API接口,自动生成对应的SDK示例。具体操作,请参见如何自动生成SDK示例

数据API SDK

安装SDK

  1. 执行以下命令安装PHP SDK。

    composer require alibabacloud/eventbridge
  2. 执行以下命令安装打印端口。

    composer require alibabacloud/tea-console

SDK示例

数据API SDK目前只包含发布事件(PutEvents),如需使用PHP SDK发布一个或多个事件,请参考以下示例代码。

<?php

namespace Alibabacloud\Sample;

use AlibabaCloud\SDK\EventBridge\Eventbridge;
use AlibabaCloud\SDK\EventBridge\Models\CloudEvent;
use AlibabaCloud\SDK\EventBridge\Models\Config;
use AlibabaCloud\Tea\Console\Console;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;
use Exception;

class Client
{
    /**
     * Create client初始化公共请求参数。
     *
     * @return Eventbridge
     */
    public static function createClient()
    {
        $config = new Config([]);
        SetAccessKeyId(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")).
        SetAccessKeySecret(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")).
        SetEndpoint("<endpoint>")
        return new Eventbridge($config);
    }

    /**
     * PutEvents
     *
     * @param Eventbridge $client
     *
     * @return void
     */
    public static function PutEvents($client)
    {
        $event                  = new CloudEvent([]);
        $event->datacontenttype = 'application/json';
        $event->data            = Utils::toBytes('test');
        $event->id              = 'a5074581-7e74-4e4c-868f-47e7afdf****';
        $event->source          = 'acs.oss';
        $event->specversion     = '1.0';
        $event->type            = 'oss:ObjectCreated:PostObject';
        $event->time            = '2020-08-24T13:54:05.965Asia/Shanghai';
        $event->subject         = '1.0';
        $event->type            = 'acs:oss:cn-hangzhou:1234567:xls-papk/game_apk/123.jpg';
        $event->extensions      = [
            'aliyuneventbusname' => 'demo-bus',
        ];
        try {
            $resp = $client->putEvents([
                $event,
            ]);
            Console::log('--------------------Publish event to the aliyun EventBus--------------------');
            Console::log(Utils::toJSONString($resp->toMap()));
        } catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            Console::log($error->message);
        }
    }

    /**
     * @param string[] $args
     *
     * @return void
     */
    public static function main($args)
    {
        $client = self::createClient();
        self::PutEvents($client);
    }
}
require '../vendor/autoload.php';
Client::main([]);