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.phpauth.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へルパ関数の使い方は下記ドキュメントから確認できます。