在实例化我的新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实例化一个副本。这一切似乎有点浪费。
有更好的方法吗?谢谢!
答案 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()