Laravel(6.x) 定数はconfigにまとめる
Laravelに限らずですが、開発をしていると決まった値「定数」が
必要になる場面が必ず発生します
例えば、、住所を入力する画面があったとして都道府県を
プルダウン選択する項目があるとします
利用者は「東京都」「大阪府」など文字で選択しますが
データとして保持するのは都道府県コード(通称 prefecture code)
で持っておくのが望ましいです(データ量、クエリ的にも)
そうすると、東京都は例えば都道府県コード 13 ですが
View側とControllerまたはModel側どちらにも名称とコード値を使うケースが
発生してきます
そういった際にグローバルで扱える定数として持っておき、
どこでも呼び出せるようにしておくと便利です
具体的には プロジェクトフォルダ直下にある configフォルダの配下に
ファイルを作りましょう(既存に追加でもOKです)
configフォルダにファイルを追加
config/constants.php
<?php
return [
'prefs' => [
1 => '北海道',
2 => '青森県',
3 => '岩手県',
4 => '宮城県',
// ...割愛
47 => '沖縄県'
],
];
Laravelはconfig配下にファイルを追加するだけで使えるようになります
config配下にフォルダを追加して管理することも可能です
configヘルパを使って利用する
例えば上記で作った値を使いたいとなった場合
controllerで使うケース
class HelloController extends Controller
{
public function index()
{
$prefs = config('constants.prefs'); // ← configヘルパを使って取得
...
}
view(blade)で使うケース
<select id="select-pref" class="select-pref" name="pref">
<option value="0">- 都道府県選択 -</option>
@foreach (config('constants.prefs') as $key => $value)
<option value="{{ $key }}">{{ $value }}</option>
@endforeach
</select>
上記それぞれのように config()のconfigヘルパ関数を使うことで
フォルダに配置しただけの定数を使うことができます
まとめ
configへの配置とconfigヘルパ関数を使うことで
簡単に定数を設置することができます
サービスの運用が長くなればなるほど、この定数ファイル群が
非常に大きくなりがちです
configフォルダの中であってもフォルダ・ファイルでうまくわけて
より利用しやすい方法を目指してください