easyconn / reactphp-slim
Slim 请求和响应扩展,以允许 reactPHP 服务 Slim 框架实例
v0.4.2
2016-08-31 20:48 UTC
Requires
- php: ^7.0
- react/http: 0.3.*
- slim/slim: ^3.1
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();