Quantcast
Channel: PHP8タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 546

【Laravel】実装コード上で.envの値はconfig()で取得する

$
0
0
環境 Laravel Framework: 8.56.0 PHP: 8.0 env()では、なぜダメなのか 同じく.envの値を取得できるものに、env()があります。 これだけ聞くと、 config()でもenv()でも良いように感じますが、 特定状況下で動作させると、差が明らかになります。 その特定状況下というのが、 config:cacheを実行した環境になります。 config:cacheって何? 通常では、 設定情報や環境情報を参照する際は、 コールする度に読み込みに行くのですが、 これではパフォーマンス(実行速度)が落ちることがあります。 そのため、 そういった情報をキャッシュ化することで 読み込みに行く時間を短縮する訳です。 つまり、config:cacheを実行することで 結果的に、パフォーマンスが上がることに繋がります。 .envが読み込まれない 本番環境では、 パフォーマンスを向上させようとconfig:cacheを実行することがあります。 その状況で、 config()とenv()はキャッシュされた情報から取得しようとすると・・・、 config/*.phpの情報は取得できるのですが、 .envの情報は秘匿され、取得することができません。 結果として、 config()では取得できるが、env()では取得できないということになります。 解決方法 では、どうすればよいのか。 それは、configディレクトリに新たなファイルを作成し、 そのファイル内でenv()をコールして、 .envの情報をconfigに持たせることです。 これにより、config()で取得することができます。 具体例 config/sample.php <?php return [ 'want-value' => env('WANT_VALUE'), ]; 上記のconfigを追加すれば、 以下のように呼び出すことができるようになります。 実装している場所(コントローラなど) <?php // これで取得できる $value = config('sample.want-value'); // これは取得できないことがある $value = env('WANT_VALUE'); // nullの可能性あり 参考 Laravel の .env の値は config() 経由で使う

Viewing all articles
Browse latest Browse all 546

Trending Articles