weew / http-app
weew/app 包的 Http 版本。
v2.11.0
2016-07-27 05:24 UTC
Requires (Dev)
- phpunit/phpunit: ^4.7
- satooshi/php-coveralls: ^0.6.1
README
目录
安装
composer require weew/http-app
简介
这是一个非常简约的 http 应用包装器。
使用
整个应用的生命周期是基于事件的。为了成功处理 http 请求,你必须处理 HandleHttpRequestEvent
并提供一个实现 IHttpResponse
接口的有效响应。
以下是一个非常基础的实现示例。
$app = new HttpApp(); $app->getEventer() ->subscribe(HandleHttpRequestEvent::class, function(HandleHttpRequestEvent $event) { $request = $event->getRequest(); // handle request (do some routing, call a controller, etc.) // provide a response that implements the IHttpResponse interface $event->setResponse($response); });
已经有现成的实现,请参阅 weew/http-app-request-handler。
环境感知
有时你可能需要在不同的环境中发送请求到同一个前端控制器,例如在测试期间。Symfony 使用不同的前端控制器来实现这一点:app.php
和 app_dev.php
。然而,这种方法可能会改变 URL,可能不适合某些情况。除了创建不同的前端控制器,你还可以通过 x-env: dev
头部或查询参数 ?env=dev
或在 URL 中某处 /env=dev/some/url
来指定环境。如果可以通过头部或 URL 查询或 URL 部分检测到环境设置,则相应的数据(x-env 头部,env 查询参数,URL 中的 env 值)将被自动删除。默认情况下,此功能是禁用的,你可以通过将 debug
设置为 true 来启用它。
$app->setDebug(true); $request = new HttpRequest(); $request->getHeaders()->set('x-env', 'stage'); // or $request->getUrl()->getQuery()->set('env', 'stage'); // or $request->getUrl()->setPath('/env=stage/some/url'); // app will run in the "stage" environment $app->handle($request);
请不要在生产环境中使用此功能!这就是为什么默认情况下它是禁用的。仅在你开发环境中启用此功能。
扩展
有多个扩展可用