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

"Undefined variable: environment" How do I get App::enviroment()?

//环境Laravel框架8.49.1

我想用App::environment的数据做一个条件分支,但是找不到获取数据的方法。我认为我应该获取本地,因为它在 .env 文件中写为 APP_ENV=local。有谁知道如何获得App::environment?

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use App\Models\Dice;
use App\Models\LoadedDice;

$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变量,如果没有定义,会return 'production'.

我在 Laravel 8 上测试了下面的两个函数,并且 return 都正确地输入了值。

use Illuminate\Support\Facades\App;
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

我觉得应该可以解决...不然日志有没有错误?


已编辑:我查看了您的代码,您在 class 之外定义了变量,并且任何时候都不要将其传递给内部。

将变量放入函数中:

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