ilexn / swoole-convert-psr7
将swoole转换为psr7请求/响应
0.6.1
2022-05-04 06:25 UTC
Requires
- php: >=8.1
- dflydev/fig-cookies: ^3.0
Requires (Dev)
- eaglewu/swoole-ide-helper: dev-master
- nyholm/psr7: ^1.5
- phpstan/phpstan: ^1.5
- phpstan/phpstan-phpunit: ^1.1
- phpstan/phpstan-strict-rules: ^1.1
- phpunit/phpunit: ^9.5
- rector/rector: ^0.12.23
- roave/security-advisories: dev-latest
- symfony/var-dumper: ^6.0
Suggests
- ext-openswoole: This package requires at least one of Open Swoole or Swoole
- ext-swoole: This package requires at least one of Open Swoole or Swoole
This package is auto-updated.
Last update: 2024-09-19 07:55:08 UTC
README
使用任何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 4和Nyholm/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();