jakubboucek/openwhisk-runtime

PHP 的 OpenWhisk 运行时工具,例如与 DigitalOcean Serverless Functions 一起使用

v0.1.0 2023-09-09 09:53 UTC

This package is auto-updated.

Last update: 2024-09-17 10:34:53 UTC


README

此库为在 OpenWhisk 运行时内部运行的 PHP 应用程序提供更简洁的处理响应的工具。OpenWhisk 运行时

原始 OpenWhisk 动作 中,你需要返回一个清晰定义的数组 - 这缺少类型控制,并且有些脏乱。

此库提供工具来构建大多数常见情况下的响应(HTTP、HTML、JSON 响应等)。

安装

composer require jakubboucek/openwhisk-runtime

用法

不使用此库发送 OpenWhisk 运行时的响应

<?php
function main(array $args) : array
{
    $name = $args['name'] ?? 'stranger';
    $greeting = "Hello $name!";
    return ['body' => $greeting, 'headers' => ['Content-Type' => 'text/html; charset=utf-8']];
}

原始响应(仅用于与 OpenWhisk 的原始版本向后兼容)

<?php
use JakubBoucek\OpenWhisk\Runtime\Response;
function main(array $args) : array
{
    $name = $args['name'] ?? 'stranger';
    $greeting = "Hello $name!";
    return new Response\RawResponse(['body' => $greeting, 'headers' => ['Content-Type' => 'text/html; charset=utf-8']]);
}

原始 JSON 响应(仅用于与 OpenWhisk 的原始版本向后兼容)

<?php
use JakubBoucek\OpenWhisk\Runtime\Response;
function main(array $args) : array
{
    $name = $args['name'] ?? 'stranger';
    $greeting = "Hello $name!";
    return new Response\RawJsonResponse(['message' => $greeting]);
}

HTTP 响应

<?php
use JakubBoucek\OpenWhisk\Runtime\Response;
function main(array $args) : array
{
    if (!isset($args['name'])) {
        return (new Response\HttpResponse("Error: Missing required field 'name'."))
            ->setStatusCode(400)
            ->setContentType(Response\HttpHeader::PlainContentType);
    }

    $greeting = "Hello {$args['name']}!";
    return (new Response\HttpResponse($greeting))
        ->setContentType(Response\HttpHeader::PlainContentType);
}

HTML 响应

<?php
use JakubBoucek\OpenWhisk\Runtime\Response;
function main(array $args) : array
{
    $name = $args['name'] ?? 'stranger';
    $greeting = sprintf('Hello <strong>%s</strong>!', htmlspecialchars($name));
    return new Response\HtmlResponse($greeting);
}

JSON 响应

<?php
use JakubBoucek\OpenWhisk\Runtime\Response;
function main(array $args) : array
{
    if (!isset($args['name'])) {
        return (new Response\JsonResponse(['error' =>"Error: Missing required field 'name'."))
            ->setStatusCode(400);
    }

    $greeting = "Hello {$args['name']}!";
    return new Response\JsonResponse(['message' => $greeting]);
}

捕获标准输出缓冲区响应

<?php
use JakubBoucek\OpenWhisk\Runtime\Response;
use JakubBoucek\OpenWhisk\Runtime\Source;
function main(array $args) : array
{
    $response = new Response\DynamicResponse(new Source\OutputBuffer());   

    echo 'Dumping $args variable:' . "\n";
    var_dump($args);   
   
    return $response;
}