おっす、豚野郎です。
.envで設定した値をconfigを経由しないで取得する方法と、
configを経由して使う方法で取得する内容をサンプルコードと一緒に書いていきます。
1. configを経由しないパターン
以下のパターンで、envファイルに書かれた値は取得が可能です。
.env
TEST_ENV=TEST
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ConfigController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', [ConfigController::class, 'index']);
app/Http/Controllers/ConfigController.php
<?php
namespace App\Http\Controllers;
class ConfigController extends Controller
{
// フォーム
public function index() {
$env = env('TEST_ENV');
dd($env);
}
}
結果
"TEST"
2. configを経由する方法
config/envConfig.php
<?php
return [
'test_env' => env('TEST_ENV'),
];
app/Http/Controllers/ConfigController.php
<?php
namespace App\Http\Controllers;
class ConfigController extends Controller
{
// フォーム
public function index() {
$env = config('envConfig.test_env');
dd($env);
}
}
※ 他は同じです。
結果
"TEST"
3. なぜconfigを経由するのか?
以下のサイト参照
https://hiroto-k.hatenablog.com/entry/2018/03/28/213000
「本番環境でconfig:cacheコマンドを実行した際、.envファイルを読み込まないから。」
これはどういうことなのか書いていきます。
php artisan config:cache
こちらのコマンドは、configの読み込みを早くするキャッシュを作成するコマンドです。
そして、.envが読み込まなくなります。
以下参考
https://qiita.com/tatsuya_1995/items/c53f2fcb468b9cd27eb9
このコマンドを実行した後の1の結果は以下です。
結果
null
安易にconfig:cacheは使わない方がいいという記事も見ましたが、その通りかもしれません。
個人的な安全策は2のconfigを通して取得するのがいいかなと思います。