Silex:如何设置$ app [' debug']

时间:2015-10-28 16:46:48

标签: silex http-request

在实例化我的新Silex \ Application之后,我想有条件地设置$ app [' debug'],具体取决于它是在发现我的DEV域还是我的PROD域。

我目前正在做:

$app = new Application();
$request = Request::createFromGlobals();

if ($request->getHost() == 'production.mydomain') { // PRODuction
    $app['debug'] = false;
} else { // DEVelopment
    $app['debug'] = true;
}

根据http://silex.sensiolabs.org/doc/usage.html#example-post-route

  

当前请求由Silex自动注入Closure   感谢类型提示。它是Request的一个实例,所以你可以   使用请求get方法获取变量。

但由于我不明白的原因,目前的请求似乎无法在我需要设置$ app [' debug']的情况下提供,这是为什么我用静态createFromGlobals实例化一个副本。这一切似乎有点浪费。

有更好的方法吗?谢谢!

2 个答案:

答案 0 :(得分:1)

在实例化您的应用程序之后,它仍未设置。在您致电run()之前,它不会开始处理实际请求。

尝试在中间件之前在应用级别设置调试。

答案 1 :(得分:0)

您可以使用$_SERVER global:

在引导程序中对其进行硬编码
$debug = isset($_SERVER['HTTP_HOST']
        && 'production.mydomain' === $_SERVER['HTTP_HOST']
        ? false : true;

$app = new Application(['debug' => $debug]);

$app->run(); // calls Request::createFromGlobals()