環境
Laravel v9.5.1 (PHP v8.1.3)
enum(列挙型)
曜日や血液型、星座、都道府県名など似たような意味を持ち、値がまったく変化しない複数の定数を定義しておく。
(PHP8.1からenumが使える)
クラスのように使えるがインスタンス化はできない。
app/Enums/UserRole.php
<?php
namespace App\Enums;
enum UserRole: int
{
case Admin = 1;
case Member = 2;
}
定数
enumとは反対に列挙しない定数を定義しておく。
app/Consts/GatePolicy.php
<?php
namespace App\Consts;
class GatePolicy
{
public const ADMINISTRACTOR_ACCESS = 'administrator-access';
}
LaravelのGate
(認可)を使って、管理者ユーザーのみアクセスできるようにした際のstringを定数化した。
文脈的にモデルにも切り出せない定数だったので、Consts
ディレクトリを作成して独立させて管理することにした。
public function store(Request $request)
{
Gate::authorize(GatePolicy::ADMINISTRACTOR_ACCESS);
...
}
定数の管理の仕方は下記記事が参考になった。
(記事の例は列挙していってるのでenumで管理してもいいのかなと個人的には思った。)