ilexn/swoole-convent-psr7

此包已被弃用,不再维护。作者建议使用 ilexn/swoole-convert-psr7 包。

将 swoole 转换为 psr7 请求/响应

维护者

详细信息

github.com/iLexN/swoole-psr7

来源

问题

资助包维护!
iLexN

0.6.1 2022-05-04 06:25 UTC

README

Latest Stable Version Total Downloads

CI Check Coverage Status

使用任何 PSR 17 工厂来转换成 PSR 7 响应/请求。

注意:尚未用于生产。仅供学习。

从 0.5.0 版本开始,CI 测试也包括 swoole 和 openswoole

安装

通过 Composer

$ composer require ilexn/swoole-convert-psr7

从旧包升级

删除旧包

$ composer remove ilexn/swoole-convent-psr7

安装新包

$ composer require ilexn/swoole-convert-psr7

使用相同的命名空间的两个包,不需要更改其他代码。

用法

使用 Slim 4Nyholm/psr7 作为示例。

<?php
declare(strict_types=1);

use Nyholm\Psr7\Factory\Psr17Factory;
use Psr\Http\Message\ResponseInterface;
use Swoole\Http\Response;
use Swoole\Http\Request;

include 'vendor/autoload.php';

$http = new swoole_http_server('0.0.0.0', 9501);
$psr17Factory = new Psr17Factory();


$serverRequestFactory = new \Ilex\SwoolePsr7\SwooleServerRequestConverter(
    $psr17Factory,
    $psr17Factory,
    $psr17Factory,
    $psr17Factory
);

$app = new Slim\App($psr17Factory);
$app->get('/hello/{name}', function ($request, ResponseInterface $response, $args) {
    //dump($args);
    $response->getBody()->write("Hello, " . $args['name']);
    return $response->withHeader('X-Powered-By','ilexn');
});

$http->on('start', function ($server) {
    echo "Swoole http server is started at http://127.0.0.1:9501\n";
});

$http->on('request',
    function (Request $request, Response $response) use ($serverRequestFactory , $app
    ) {
        $psr7Request = $serverRequestFactory->createFromSwoole($request);
        $psr7Response = $app->handle($psr7Request);
        $converter = new \Ilex\SwoolePsr7\SwooleResponseConverter($response);
        $converter->send($psr7Response);
    });

$http->start();

参考