即使条件为true,laravel也不会在IF子句中加载env;

时间:2018-10-24 12:18:37

标签: php laravel environment-variables

这是我在bootstrap / app.php中添加的怪异代码:

$host = $SERVER['HTTPHOST'] == 'test.local:8000';
var_dump($host);
if ($host) {
    var_dump($host);
    $app->loadEnvironmentFrom('.env.testing');
}

发生了什么事

当我尝试获取上面的网址时,$ host始终为true。我看到两个函式(真,真),但是.env没有加载。 (默认值为)

但是如果我将其更改为if(true),它会突然起作用。如果我将它放在if之外,它也可以工作。为什么会这样呢?这似乎完全不合逻辑。

1 个答案:

答案 0 :(得分:0)

让我们提醒一些php课程。 要检查变量是否为空,可以执行

if($var){}

如果变量具有值,则返回true,否则返回false。

在这种情况下,您在执行$host = $SERVER['HTTPHOST'] == 'test.local:8000';时会为$ host变量分配一个值。因此,如果始终返回true。

您可以做的是:

if ($host == "test.local:8000") {
     var_dump($host);
     $app->loadEnvironmentFrom('.env.testing');
}else{
     //do some stuff
}