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