概要
環境ごとに値が変わるものは.envファイルに定義するのが多いと思います。
その際、.envファイルに定義した値を取得する際にはconfig以下のファイル経由での取得(config関数)することと書かれてますが、
たまにenv関数を使用してそのまま定義した値を取得する処理が書かれていることも多く見られるので、
それぞれの関数を使用して、config:cacheした後と前での.envの定義した値の取得検証をしてみます。
Configuration - Laravel - The PHP Framework For Web Artisans
設定値と確認方法
検証に使用したLaravelのバージョンは5.8.26です。
(環境はHomestead(8.6.0)を使用しました。)
また、基本的に.env以外はデフォルト値です。
APP_NAME=Laravel
APP_ENV=local
APP_KEY=**********************
<?php
return [
// ~省略~
/*
|--------------------------------------------------------------------------
| Application Environment
|--------------------------------------------------------------------------
|
| This value determines the "environment" your application is currently
| running in. This may determine how you prefer to configure various
| services the application utilizes. Set this in your ".env" file.
|
*/
'env' => env('APP_ENV', 'production'),
値の確認は以下のようにvar_dumpを使用
var_dump(config('app.env'));
var_dump(env('APP_ENV'));
exit;
config:cache前
まずconfig:cacheする前の値を取得してみます
config:cacheする前は**config関数で取得するとnullが帰ってくるようです。**※
※2019/09/04 追記
検証時はnullが返ってきたのですが、他環境(バージョンは異なる)ではデフォルト値(local)が返ってきました。
おそらく本来の動きとしては、デフォルト値(local)が返ってくるのが正の動きです。
以下は別環境かつ別バージョンで検証した際のtinkerでの結果です。
なので、nullが返るのは検証した際の環境がおかしかったかもしれません。(コメント欄も併せてご覧ください)
config:cache後
以下のコマンドを実行して再度、値の確認をしてみます。
php artisan config:cache
env関数の方はnullが返るようになりました。
そしてconfig:cache後はconfig関数の方は定義した値を取得できるようになりました。
config:cache後にconfig:clear
config:cache後に以下のコマンドを実行後、値の確認をしてみます
php artisan config:clear
両方の関数で.envの定義した値を取得できました。
おまけ(.envファイルからAPP_ENV=local行を削除)
.envファイルからAPP_ENV=localを丸ごと削除した際に各関数を実行してみる。
APP_NAME=Laravel
APP_KEY=**********************
以下tinker(laravel用REPL)で実行した際の様子
>>> var_dump(config('app.env'));
string(10) "production"
=> null
>>> var_dump(env('APP_ENV'));
NULL
=> null
>>>
結果、config関数はconfig\app.phpで設定されている値を取得しますが、env関数はそのままnull返すようです。
この結果なのでどちらにしてもconfig関数使った方がよさそうですね。
おわり
-
config関数で定義値取得するように書いてた場合、config:cacheし忘れてたら大変なことになりそう



