ilexn / swoole-convent-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:07 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();