config/ の設定ファイルと .env の関係はどうなっていますか。
env() は config/ の中だけで読み、アプリからは config() 経由で参照します。これを守らないと、本番で config:cache を実行した瞬間に env() が null を返して壊れます。
面接官が見ているのはenv() を直接呼ぶ事故の予防。config:cache の落とし穴の前提。
よくある答えと、面談でどう見られるか
- config/ の中で env() を読み、アプリのコードからは config() 経由で参照する
これが原則です。この形なら config:cache を実行しても壊れません。 - どこからでも env() を直接呼んでよい
これが定番の事故です。config:cache 後は .env が読み込まれなくなり、env() はシステム環境変数しか返さなくなります(通常そこには無いので null になります)。 - config/ は使わず .env だけで管理するのが今の書き方
config/ は現役です。デフォルト値や環境非依存の設定はそちらに書きます。 - .env は config/ が読み込めなかったときの予備
逆です。config/ が .env を読みます。
模範解答
.env の値は config/ のファイルの中で env() を使って読み込み、アプリのコードからは config('services.foo.key') のように config() 経由で参照します。
これを守らないと、本番で php artisan config:cache を実行したときに壊れます。設定が1ファイルにまとめられ、以降 .env は読み込まれなくなるためです。
正確には「env() が null を返す」のではなく、公式ドキュメントの記載では「env 関数は外部のシステムレベル環境変数しか返さなくなる」。サーバーにその名前の環境変数が無ければ結果として null になります。「env() は config/ の中でしか使わない」と覚えてください。