導覽

PHP

PHP SDK

了解如何用 bannerify/bannerify Composer 套件生成圖片和 PDF。

bannerify/bannerify 是 PHP 8.1 以上版本的 Bannerify 用戶端。它使用 Guzzle,並以值的形式回傳錯誤,所以請求失敗時不會擲出例外。

安裝

composer require bannerify/bannerify

建立用戶端

你需要一組 API 金鑰。請到儀表板的 API Keys 頁面建立,並把它留在伺服器上。

<?php

require 'vendor/autoload.php';

use Bannerify\Client;

$client = new Client(getenv('BANNERIFY_API_KEY'));

生成圖片

$result = $client->createImage('tpl_xxx', [
    'modifications' => [
        ['name' => 'headline', 'text' => 'Summer sale'],
    ],
]);

if (isset($result['error'])) {
    throw new RuntimeException($result['error']['message']);
}

file_put_contents('banner.png', $result['result']);

$result['result'] 是存放圖片位元組的字串。

方法

方法 結果 用途
createImage 位元組 取得圖片的位元組
createPdf 位元組 取得 PDF
createStoredImage 網址字串 取得託管的圖片網址
renderVideo (Beta) 事件的 Generator 渲染影片並追蹤進度
renderAndWaitVideo (Beta) 網址字串 渲染影片並取得它的 MP4 網址
createVideo (Beta) 已建立影片的陣列 不等待就開始影片,並立即取得它的 ID
getVideo (Beta) 影片陣列 依 ID 讀取影片的狀態和 MP4 網址
watchVideo (Beta) 事件的 Generator 依 ID 再次追蹤影片的進度
generateImageSignedUrl 網址字串 建立一個在有人開啟時渲染的連結

前三個方法請見建立圖片和 PDF,影片方法請見渲染影片,最後一個請見簽署網址。

處理錯誤

除了 generateImageSignedUrl 之外,每個方法都會回傳含有 result 鍵或 error 鍵的陣列,兩者不會同時出現。

['result' => '...']

['error' => ['code' => 'NOT_FOUND', 'message' => '...', 'docs' => '...', 'requestId' => '...']]

API 回傳的錯誤包含全部四個鍵。docs 連結到該代碼的頁面,需要針對某個請求尋求協助時,請把 requestId 提供給支援團隊。各個代碼請見錯誤。

SDK 自己會建立幾種錯誤。它們有 code、message 和 docs,但沒有 requestId。

代碼 意義
INVALID_FORMAT 格式不是 png、jpeg 或 webp
REQUEST_ERROR 請求在 API 回應之前就失敗,例如連線中斷,或請求超過逾時時間
HTTP_ERROR API 回應了錯誤,但 SDK 無法讀取
TIMEOUT_ERROR 影片串流中斷,且 SDK 無法再次讀取影片
EXCEPTION SDK 內部發生的其他例外。message 是例外的文字

generateImageSignedUrl 會回傳字串,當格式不受支援時會擲出 InvalidArgumentException。

選項

$client = new Client(getenv('BANNERIFY_API_KEY'), [
    'timeout' => 30,
]);
選項 預設值 說明
baseUrl https://api.bannerify.co/v1 API 的基本網址
timeout 60.0 請求逾時時間,單位為秒

延伸閱讀