Laravelのconfigヘルパーの使い方と、configに値を定義する方法について記載します。
configファイルに値を書いておくと、Webアプリケーション内で定義した固定値をconfigヘルパーから取得できるようになります。
掲載しているサンプルコードはLaravel8で検証しています。
Laravelのconfigファイルとは?
config
ディレクトリ配下に配置されているファイルです。
PHPファイルを配置して、配列を返すようにしておくと、Webアプリケーション内から自由にアクセスして値を取り出して使用することができます。
例えば、Laravelに最初から配置されているconfig/app.php
を確認します。
ファイルの中身を省略しますが、下記のようにファイルから配列を返すようにしているだけです。
<?php
return [
'name' => env('APP_NAME', 'Laravel'),
'timezone' => 'UTC',
'locale' => 'en',
];
このファイルからアプリケーション名を取得する場合は、configヘルパーを使ってconfig('app.name')
とすると取得することができます。
タイムゾーンはconfig('app.timezone')
で取得できます。
取得できる値は、配列の値として定義されている値になります。
configヘルパーに渡す引数に「ファイル名.項目名」とすると、定義されている値が取得できます。
configファイルに値を定義するときは、今後ほとんど変更がないような固定値を設定します。
.env
やlangファイル
と使い分けると良いかと思います。アプリケーション内で使用するメッセージ(文字列)については、
resources/lang
配下で管理すると良いです。langヘルパーやクラスで取得できます。詳しくは下記をご確認ください。
.env
に記載すると良いかと思います。詳しくは下記をご確認ください。
configファイルを追加する
実際にconfigファイルを作成して使ってみます。
config
ディレクトリ配下にファイルを置いて、配列定義すると、すぐに使用できるようになります。
const.php
という名前でファイルを作成しました。
中身には適当な値を定義してみました。
<?php
return [
'page_url' => 'https://codelikes.com',
'fruits' => ['apple', 'banana', 'lemon'],
'gender' => [
'male' => 1,
'female' => 2,
],
];
configファイルの設定値を使用する
実際に使用するときにはconfigヘルパーを使用して、下記のように使います。
これは、アクセスされた時に`https://codelikes.com`にリダイレクトするメソッドです。
public function redirectCodelike() {
return redirect(config('const.page_url'));
}
configに渡した引数のconst.page_url
で、定義された`http://codelikes.com`が返ってきます。
配列のキーを指定した場合は配列が返ってきます。
dd(config('const.fruits'));
上記のように、配列のキーを指定してdd
ヘルパーで出力すると、下記のように配列が返ってきたことが確認できます。
array:3 [
0 => "apple"
1 => "banana"
2 => "lemon"
]
また、配列の中の連想配列の値にアクセスするには「ファイル名.項目名.項目名」のようにアクセスできます。
例えば、下記のように出力した場合です。
dd(config('const.gender.male'));
結果として、const.php
に定義した「1」が返ってきます。
終わりに
今回はconfigヘルパーを使って、設定値(定数)を取得する方法と設定値を追加する方法を書きました。
Laravelで使用する固定値は、文字列ならmessageファイル、環境で変わるなら.env
など管理する場所を考えて使うと良いかと思います。
設定した値に関連する文字列を取得したい場合が出てくるかもしれません。
下記のような場合です。
return [
'gender' => [
'value' => [
'male' => 1,
'female' => 2,
],
'text' => [
'male' => '男',
'female' => '女',
],
],
];
laravel-enum
を使用すると良いと思います。laravel-enum
については、下記を確認してください。
コメント