easyconn/reactphp-slim

Slim 请求和响应扩展,以允许 reactPHP 服务 Slim 框架实例

v0.4.2 2016-08-31 20:48 UTC

This package is auto-updated.

Last update: 2024-08-29 04:53:33 UTC


README

介绍

这个库是为了使用 reactPHP 作为 Slim 框架的 HTTP 服务器而创建的,我扩展了 Slim 请求和响应对象以实现函数,这些函数允许我们将原生 reactPHP 对象中的数据传输到 Slim 对象中。通过这种方式,我们可以为 Slim 框架创建一个基本的 react 服务器。

目前正在开发一种新的方式来设置 reactPHP 服务器并运行 Slim 应用程序,请使用 v0.4.2 版本(下面有文档),这个版本还没有完成,我正在对其进行测试。

require '../vendor/autoload.php';

use \mbarquin\reactSlim;

// We keep a new Slim app instance.
$app = new \Slim\App();

// We add a closure to attend defined request routes
$app->any('/hello/{name}', function (
        \Slim\Http\Request $request,
        \Slim\Http\Response $response) {

        $name = $request->getAttribute('name');
        $response->getBody()->write("Hello, $name");

        return $response;
    });

$server = new \mbarquin\reactSlim\Server();

$server->withPort(1337)->run($app);

v0.4.2 设置

这是运行 slimPHP 应用程序与 reactPHP 服务器一起的老式设置

require '../vendor/autoload.php';

use mbarquin\reactSlim;

// We keep a new Slim app instance.
$app = new \Slim\App();

// We add a closure to listen defined request routes
$app->get('/hello/{name}', function (
        \mbarquin\reactSlim\Request $request,
        \mbarquin\reactSlim\Response $response) {

        $name = $request->getAttribute('name');
        $response->getBody()->write("Hello, $name");

        return $response;
    });

// We create a closure to be attached to server request event.
$serverCallback = function (
       \React\Http\Request $request,
       \React\Http\Response $response) use ($app){

    $slRequest  = \mbarquin\reactSlim\Request::createFromReactRequest($request);
    $slResponse = new \mbarquin\reactSlim\Response();

    $app->process($slRequest, $slResponse);

    $slResponse->setReactResponse($response, true);
};

// We make the setup of the ReactPHP
$loop   = React\EventLoop\Factory::create();
$socket = new React\Socket\Server($loop);
$http   = new React\Http\Server($socket, $loop);

// Ligamos la closure al evento request.
$http->on('request', $serverCallback);

echo "Server running at http://127.0.0.1:1337\n";

$socket->listen(1337);
$loop->run();