//环境Laravel框架8.49.1
我试图通过使用App::environment的数据来创建一个条件分支,但我找不到获取数据的方法。我认为我应该获得local,因为它是在.env
文件中写的APP_ENV=local。有人知道如何获得App::环境吗?
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesApp;
use AppModelsDice;
use AppModelsLoadedDice;
$environment = App::environment();
class DiceController extends Controller {
public function rollDouble(): int {
// $dice = new Dice();
// return $dice->roll() + $dice->roll();
if ($environment == 'local') {
// if (APP::enviroment('local')) {
$dice = new LoadedDice();
} else {
$dice = new Dice();
}
return $dice->roll() + $dice->roll();
}
}
是否更改了config/app.php文件中的"env"项?
默认情况下,它看起来像这样:
'env' => env('APP_ENV', 'production'),
换句话说,当获取ENV时,它将检查.ENV文件的APP_ENV变量,如果未定义,它将返回"production"。
我在Laravel 8上测试了下面的两个函数,它们都正确地返回了值。
use IlluminateSupportFacadesApp;
echo App::environment(); //output: local
echo app('env'); //output: local
你可能已经更改了config/app.php文件,或者有一些缓存困扰着你,试着清除它:
php artisan clear-compiled
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
我认为它应该解决。。。否则,日志中是否有任何错误?
EDITED:我查看了您的代码,您在类外部定义变量,并且在任何时候都不将其传递到内部。
将变量放入函数中:
class DiceController extends Controller
{
public function rollDouble(): int
{
$environment = App::environment();
if ($environment == 'local') {
$dice = new LoadedDice();
} else {
$dice = new Dice();
}
return $dice->roll() + $dice->roll();
}