Laravel configヘルパ関数の使い方と注意点
Laravelの設定値にアクセスしたいときに使用するconfig
へルパ関数について、使い方と注意点をまとめました。
使い方
まず、config
ディレクトリの中から設定を読み取りたいファイルを探します。ここでは、app.php
を見てみます。
// config/app.php
return [
'name' => env('APP_NAME', 'Laravel'),
'debug' => (bool) env('APP_DEBUG', false),
'url' => env('APP_URL', 'http://localhost'),
'asset_url' => env('ASSET_URL'),
'timezone' => 'UTC',
'locale' => 'ja',
// ...以下省略
];
連想配列の形で設定値が返されていました。
次に、config
ヘルパ関数を使用して、そのファイル名とキーをドット(.
)を用いて組み合わせて指定します。
config('app.timezone') // UTC が返る
具体例
config
ディレクトリ下にはapp.php
やauth.php
などデフォルトで色々なファイルがありますが、自分で独自の設定ファイルを作ることもできます。
当ブログでは、myconf.php
というファイルを作り、次のように設定しています。
// config/myconf.php
return [
'login_route' => env('LOGIN_ROUTE', 'login'),
];
# .env
LOGIN_ROUTE=hoge
// routes/auth.php
Route::get(config('myconf.login_route'), [AuthenticatedSessionController::class, 'create'])->name('login');
ログイン画面のURLを推測しづらくするために環境変数で可変のURLにしている例です。後述しますが、秘匿したい情報は.env
ファイルに設定してenv
へルパ経由で呼び出しています。
ここでは、config('myconf.login_route')
で呼び出されたhoge
がログイン画面のURLになります。
注意点
機密情報は直接記載しない
セキュリティの観点から、config
ディレクトリの設定ファイルに機密情報を直接記載しないように注意します。(例:DBのパスワードやAPIキー)
代わりに、.env
ファイルを使用して環境変数として設定し、それをenv
ヘルパ関数を用いて取得して設定値として使用します。具体的な対応方法は以下の通りです。
まず、.env
ファイルに機密情報を設定します:
# .env
THIRD_PARTY_API_KEY=abcdef123456
次に、config
ファイルでenv
ヘルパ関数を使用して環境変数を取得します。例えば、外部APIの設定ファイル (config/services.php
) でAPIキーを設定する場合:
// config/services.php
return [
// 既存の設定値
// 追記
'third_party_service' => [
'api_key' => env('THIRD_PARTY_API_KEY', 'defaultApiKey'),
],
],
third_party_service
の設定情報にアクセスするためには、config
ヘルパ関数を使って、以下の方法でアクセスできます。
$apiKey = config('services.third_party_service.api_key');
参考ソース
config
へルパ関数の使い方は下記ドキュメントから確認できます。