woody / http-message

dev-master 2019-01-07 23:52 UTC

This package is auto-updated.

Last update: 2024-08-29 04:48:55 UTC


README

实现了 PSR-7 PHP 标准。

演示

对于 SwooleSymfony,在 requestresponse 对象上,都没有实现 PSR-7,这是与 PSR-15 协作所必需的。

只有 Guzzle 正确实现了它。

这个库在 Swoole 和 PSR-7 实现之间建立了一座桥梁。

实现

Swoole 服务器

include 'vendor/autoload.php';

use Swoole\Http\Request;
use Swoole\Http\Response;
use Swoole\Http\Server;
use Woody\Http\Message\ServerRequest;

$server = new Server('0.0.0.0', 9501);

$server->on('request', function (Request $swooleRequest, Response $swooleResponse) {

    $request = ServerRequest::createFromSwoole($swooleRequest);

    // ...
    $response = new \Woody\Http\Message\Response(200, [], 'Hello World');
    $response = $response->withHeader('Server', 'My Server Name');
    // ...

    \Woody\Http\Message\Response::send($response, $swooleResponse);
});

$server->start();

Swoole 和 中间件

include 'vendor/autoload.php';

use Swoole\Http\Request;
use Swoole\Http\Response;
use Swoole\Http\Server;
use Woody\Http\Message\ServerRequest;
use Woody\Http\Server\Middleware\Dispatcher;

$server = new Server('0.0.0.0', 9501);

$server->on('request', function (Request $swooleRequest, Response $swooleResponse) {

    $request = ServerRequest::createFromSwoole($swooleRequest);

    $dispatcher = new Dispatcher();
    $dispatcher->pipe(new LogMiddleware());
    $dispatcher->pipe(function($request, $dispatcher) {
        $response = new \Woody\Http\Message\Response(200, [], 'Hello World');
        $response = $response->withHeader('Server', 'My Server Name');
        
        return $response;
    });

    $response = $dispatcher->handle($request);

    \Woody\Http\Message\Response::send($response, $swooleResponse);
});

$server->start();