1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Laravel】enumとconstsの使い分け

Posted at

環境

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で管理してもいいのかなと個人的には思った。)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?