"Undefined variable: environment" 如何获得App::enviroment()?



//环境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();
}

相关内容

  • 没有找到相关文章

最新更新