Skip to content

Enum

Lase が提供する PHP Enum の一覧です。すべて CodebaseJp\Lase\Enums 名前空間に属します。

拡張メソッド

各 Enum には、ケースに対応する値を返すメソッドが定義されています。

label()

UI に表示するための日本語ラベルを返します。ほぼすべての Enum が実装しています。

php
UserStatus::ACTIVE->label(); // '利用中'
PlanType::TRIAL->label();    // 'トライアルプラン'

group()

ActivityLogType のみが実装しています。ログをグループ分けするための文字列('admin' / 'tenant' / 'common')を返します。管理画面でのフィルタリングに使用されます。

php
ActivityLogType::ADMIN_LOGIN->group();  // 'admin'
ActivityLogType::TENANT_LOGIN->group(); // 'tenant'
ActivityLogType::COMMON_LOGIN->group(); // 'common'

toSql()

AnalyticsAggregation のみが実装しています。集計方法に対応する SQL 関数文字列を生成します。

php
AnalyticsAggregation::SUM->toSql('amount'); // 'SUM(amount)'
AnalyticsAggregation::COUNT->toSql('id');   // 'COUNT(id)'

アプリ側での拡張

PHP の enum は継承できないため、Lase の Enum を直接継承して拡張することはできません。ActivityLogTypeTenantPermission のように、アプリ側で独自の値を追加する必要がある Enum は、以下の手順で拡張します。

  1. アプリ側に新しい Enum を定義する(Lase の Enum とは別の型)
  2. Lase が提供するケースの値を、アプリ側の Enum にそのまま含める
  3. 同じ拡張メソッドをアプリ側の Enum に実装する

権限チェックやログ記録は文字列値の比較で行うため、型(クラス)が異なっていても値が一致すれば正しく動作します。

php
// アプリ側の enum(例)
enum MyActivityLogType: string
{
    // Lase のケースをそのまま含める
    case ADMIN_LOGIN  = 'ADMIN_LOGIN';
    case TENANT_LOGIN = 'TENANT_LOGIN';
    case COMMON_LOGIN = 'COMMON_LOGIN';
    // ... 他の Lase ケース ...

    // アプリ独自のケース
    case MY_CUSTOM_ACTION = 'MY_CUSTOM_ACTION';

    public function group(): string
    {
        return match ($this) {
            self::COMMON_LOGIN => 'common',
            self::TENANT_LOGIN => 'tenant',
            default            => 'admin',
        };
    }

    public function label(): string
    {
        return match ($this) {
            self::MY_CUSTOM_ACTION => 'カスタム操作',
            // ...
        };
    }
}

Enum 一覧

ユーザー・認証

UserStatus

テナントユーザーのステータス。User モデルで使用されます。

ケースラベル
PENDINGPENDING仮登録
ACTIVEACTIVE利用中
SUSPENDEDSUSPENDED利用停止中
WITHDRAWNWITHDRAWN退会済

AdminUserStatus

管理者ユーザーのステータス。AdminUser モデルで使用されます。

ケースラベル
ACTIVEACTIVE利用中
SUSPENDEDSUSPENDED利用停止中

AdminStatus

管理者(Admin)エンティティのステータス。

ケースラベル
INTERIMINTERIM仮登録
ACTIVEACTIVE利用中
INACTIVEINACTIVE利用停止中
ARCHIVEDARCHIVEDアーカイブ済

AdminType

管理者ユーザーの種別。

ケースラベル
SUPERUSERSUPERUSERスーパーユーザー
NORMALNORMAL通常

TenantUserStatus

テナントへの所属ステータス。TenantUser モデルで使用されます。

ケースラベル
ACTIVEACTIVE利用中
SUSPENDEDSUSPENDED利用停止中

招待

AdminUserInvitationStatus

管理者ユーザーの招待ステータス。AdminUserInvitation モデルで使用されます。

ケースラベル
PENDINGPENDING招待中
ACCEPTEDACCEPTED参加済
DECLINEDDECLINED辞退済
REVOKEDREVOKED招待取消済

TenantUserInvitationStatus

テナントユーザーの招待ステータス。TenantUserInvitation モデルで使用されます。

ケースラベル
PENDINGPENDING招待中
ACCEPTEDACCEPTED参加済
DECLINEDDECLINED辞退済
REVOKEDREVOKED招待取消済

権限

AdminPermission

管理者ロールの権限値。AdminRolePermission モデルで使用されます。

ケースラベル
ROOT*全権限

TenantPermission

テナントユーザーのロール権限値。TenantRolePermission モデルで使用されます。

アプリ側で独自の権限を追加する場合は、アプリ側での拡張を参照してください。

ケース
ROOT*
USER_READuser:read
USER_WRITEuser:write

プラン・サブスクリプション

PlanStatus

プランのステータス。Plan モデルで使用されます。

ケースラベル
ACTIVEACTIVE利用中
INACTIVEINACTIVE利用停止中
ARCHIVEDARCHIVEDアーカイブ済

PlanType

プランの種別。Plan モデルで使用されます。

ケースラベル
TRIALTRIALトライアルプラン
NORMALNORMAL通常プラン
SPECIALSPECIAL特別プラン

コンテンツ

AnnouncementStatus

お知らせのステータス。Announcement モデルで使用されます。

ケースラベル
DRAFTDRAFT下書き
PUBLISHEDPUBLISHED公開
ARCHIVEDARCHIVEDアーカイブ済

AnnouncementType

お知らせの種別。Announcement モデルで使用されます。

ケースラベル
DEFAULTDEFAULTNEWS
RELEASERELEASEリリース
TROUBLETROUBLE障害情報

InquiryStatus

お問い合わせの対応ステータス。Inquiry モデルで使用されます。

ケースラベル
OPENOPEN未対応
IN_PROGRESSIN_PROGRESS対応中
CLOSEDCLOSED対応済

MailStatus

管理者メールの送信ステータス。AdminMail モデルで使用されます。

ケースラベル
DRAFTDRAFT下書き
SCHEDULEDSCHEDULED予約済
SENDINGSENDING送信中
SENTSENT送信済
ERRORERRORエラー

MailDeliveryStatus

メール配信レコードのステータス。AdminMailDelivery モデルで使用されます。

ケースラベル
SENTSENT送信済

MailTargetType

メール送信対象の種別。AdminMail モデルで使用されます。

ケースラベル
ALLALL全員
TENANTTENANTテナント
USERUSERユーザー

アクティビティログ

ActivityLogType

操作ログの種別。ActivityLog モデルで使用されます。拡張メソッドとして group()label() を持ちます。

アプリ側で独自の種別を追加する場合は、アプリ側での拡張を参照してください。

ケースグループラベル
COMMON_LOGINCOMMON_LOGINcommon共通:ログイン
ADMIN_LOGINADMIN_LOGINadmin管理者:ログイン
TENANT_LOGINTENANT_LOGINtenantテナント:ログイン
ADMIN_CREATE_TENANTADMIN_CREATE_TENANTadmin管理者:テナント作成
ADMIN_UPDATE_TENANTADMIN_UPDATE_TENANTadmin管理者:テナント更新
ADMIN_CREATE_SUBSCRIPTIONADMIN_CREATE_SUBSCRIPTIONadmin管理者:サブスクリプション作成
ADMIN_CREATE_PLANADMIN_CREATE_PLANadmin管理者:プラン作成
ADMIN_UPDATE_PLANADMIN_UPDATE_PLANadmin管理者:プラン更新
ADMIN_UPDATE_USERADMIN_UPDATE_USERadmin管理者:ユーザー更新
ADMIN_DELETE_USERADMIN_DELETE_USERadmin管理者:ユーザー削除
ADMIN_UPDATE_ADMIN_USERADMIN_UPDATE_ADMIN_USERadmin管理者:管理者更新
ADMIN_DELETE_ADMIN_USERADMIN_DELETE_ADMIN_USERadmin管理者:管理者削除
ADMIN_INVITE_ADMIN_USERADMIN_INVITE_ADMIN_USERadmin管理者:管理者招待
ADMIN_REVOKE_ADMIN_USER_INVITATIONADMIN_REVOKE_ADMIN_USER_INVITATIONadmin管理者:管理者招待取り消し
ADMIN_CREATE_ADMIN_ROLEADMIN_CREATE_ADMIN_ROLEadmin管理者:管理者ロール作成
ADMIN_UPDATE_ADMIN_ROLEADMIN_UPDATE_ADMIN_ROLEadmin管理者:管理者ロール更新
ADMIN_DELETE_ADMIN_ROLEADMIN_DELETE_ADMIN_ROLEadmin管理者:管理者ロール削除
ADMIN_CREATE_BLOCKED_DOMAINADMIN_CREATE_BLOCKED_DOMAINadmin管理者:ブロックドメイン追加
ADMIN_DELETE_BLOCKED_DOMAINADMIN_DELETE_BLOCKED_DOMAINadmin管理者:ブロックドメイン削除

アナリティクス

AnalyticsAggregation

統計の集計方法。toSql(field) メソッドで SQL 関数文字列を生成できます。

ケースラベルSQL 関数
COUNTCOUNT件数COUNT(field)
SUMSUM合計SUM(field)
AVERAGEAVERAGE平均AVG(field)
MAXMAX最大値MAX(field)
MINMIN最小値MIN(field)

AnalyticsDateUnit

統計の日付単位。

ケースラベル
DAYDAY
WEEKWEEK
MONTHMONTH
YEARYEAR