weew/http-app

weew/app 包的 Http 版本。

v2.11.0 2016-07-27 05:24 UTC

README

Build Status Code Quality Test Coverage Version Licence

目录

安装

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.phpapp_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);

请不要在生产环境中使用此功能!这就是为什么默认情况下它是禁用的。仅在你开发环境中启用此功能。

扩展

有多个扩展可用