環境
Laravel v9.52.10 (PHP v8.2.6)
はじめに
環境変数を参照する時は、env()
からではなく、config()
経由で参照する。
環境変数の定義
laravelでは、.env
というファイルに環境変数を定義していきます。
.envファイル自体はプロジェクトルート直下にあります。
APP_NAME=Laravel
APP_ENV=local
APP_KEY=********
APP_DEBUG=true
APP_URL=http://localhost
大体このような形式になっていると思います。
環境変数名は、上記のようなスネークケース
で記述します。
環境変数を使用する
まずは、環境変数を自分で定義していきます。
TEST_NAME=miura
このように定義することで、この環境変数の値をプロジェクトの中で使用することができるようになります。
次に、先ほど定義した環境変数をプログラムで使用します。
$name = env('TEST_NAME');
環境変数を使用する時は、env()メソッド
に環境変数名を引数に渡してあげれば値を取得することができます。
デフォルト値の設定
環境変数には、その値が存在しない場合などに使用するデフォルト値
を設定することができます。
デフォルト値を設定するメリットは、誤って環境変数を削除してしまったり、削除した後に参照側を修正し忘れてしまった場合などに、デフォルト値を返すことでコードの不整合に気づきやすくなります。
$name = env('TEST_NAME', 'error');
このように、envメソッドの第一引数に環境変数名を、第二引数に環境変数が存在しない場合のデフォルト値を設定できます。
.envファイルは直接参照しない!
laravelでは、設定ファイルをキャッシュする機能があります。
$ php artisan config:cache
上記のコマンドでキャッシュが可能です。
しかし、Laravelの公式ドキュメントを見てみると、
開発過程の一環としてconfig:cacheコマンド実行を採用する場合は、必ずenv関数を設定ファイルの中だけで使用してください。設定ファイルがキャッシュされると、.envファイルはロードされません。したがって、env関数は外部システムレベルの環境変数のみを返すだけです。
ドキュメントに書いてある通り、設定ファイル(config内のファイル)がキャッシュされると、config外にある.env
ファイルはロードされなくなってしまい、env関数の呼び出し結果がnull
になってしまいます。
なので、configフォルダ内にあるファイルでのみ、env()メソッド
を使用するようにしましょう。
configで環境変数を定義する
configは、プロジェクトルート直下に存在します。
まずは、configディレクトリ下にファイルを作成し、環境変数を定義します。
<?php
return [
'test_name' => env('TEST_NAME'),
];
次に、config()メソッド
を使用して呼び出します。
$name = config('user.test_name');
このように、ファイル名.値のドット記法で呼び出すことができます。
しかし、これだけだと使用することはできないので、使用する前に値をキャッシュしておかないといけません。
$ php artisan config:cache
キャッシュした後に実行してみると、.env
に設定した環境変数をconfig
経由で取得することができます。