[Laravel]laravel-enumの使い方

Laravel

laravel-enumについて、使い方を書いています。
enumで値と日本語をそれぞれ定義して、とれるかの動作確認までやってみました。

公式リファレンスのEnumメソッドも少し試してみました。

laravel-enumとは

laravel-enumは、laravelでenumを使えるようにするライブラリです。
phpでenumを使うようにするphp-enumというライブラリもあったりするようです。

今回はlaravelのプロジェクトだったので、laravel-enumを導入してみました。
公式githubはこちらです。

公式に書いてありますが、インストール方法等を下記に記載しています。

導入方法

インストール

composerを使って下記コマンドで、導入します。

composer require bensampo/laravel-enum

app.phpの修正

config/app.phpのlocalをjaに設定します。

    /*
    |--------------------------------------------------------------------------
    | Application Locale Configuration
    |--------------------------------------------------------------------------
    |
    | The application locale determines the default locale that will be used
    | by the translation service provider. You are free to set this value
    | to any of the locales which will be supported by the application.
    |
    */

    'locale' => 'ja',

Enumファイルを作成

artisanコマンドでEnumのclassを作成できます。

php artisan make:enum Gender

今回は性別のEnumを作成してみました。

<?php

namespace App\Enums;

use BenSampo\Enum\Contracts\LocalizedEnum;
use BenSampo\Enum\Enum;

/**
 * Class Gender
 * @package App\Enums
 */
final class Gender extends Enum implements LocalizedEnum
{
    /** @var int 男性 */
    const male = 1;
    /** @var int 女性 */
    const female = 2;
    /** @var int その他 */
    const other = 9;
}

ファイルの内容を上記のように修正してみました。

Enumで日本語を取得するときはLocalizedEnumをimplementsすることで、lang/ja/enums.phpファイルを参照して取ってきてくれるようになります。

langファイルの追加

resources/lang/ja/enums.phpにファイルを追加して、下記のように定義しました。
複数あるときは、returnしている配列に要素を羅列していけばOKです。

use App\Enums\Gender;

return [
    Gender::class => [
        Gender::male => '男性',
        Gender::female => '女性',
        Gender::other => 'その他',
    ],
];

Enumクラスで使えるメソッド

使えるメソッドの一部を書いています。

getKeys() – キーの一覧を取得する

クラスにconst定義しているキーの一覧を取得してくれます。

dd(Gender::getKeys());
^ array:3 [▼
  0 => "male"
  1 => "female"
  2 => "other"
]

getValues() – 値の一覧を取得する

const変数に代入している値の一覧を取得してくれます。

dd(Gender::getValues());
^ array:3 [▼
  0 => 1
  1 => 2
  2 => 9
]

getRandomKey() – ランダムなキーを取得する

クラスにconst定義しているキーからランダムにひとつ返してくれます。

dd(Gender::getRandomKey());
^ "other"

getRandomValue() – ランダムな値を取得する

const変数に代入している値からランダムにひとつ返してくれます。

dd(Gender::getRandomValue());
^ 2

toArray() – キーと値を連想配列で取得する

定義しているキーと値の連想配列が返ってきます。

dd(Gender::toArray());
^ array:3 [▼
  "male" => 1
  "female" => 2
  "other" => 9
]

動作確認

Controllerで使ってみました。

    public function index()
    {
        echo "enumのテスト<br>";
        echo Gender::male."<br>";
        echo Gender::female."<br>";
        echo Gender::other."<br>";
        echo Gender::getDescription(1)."<br>";
        echo Gender::getDescription(2)."<br>";
        echo Gender::getDescription(9);
    }

OK👍🏻

View(blade)で使ってみました。

    <body>
        {{ App\Enums\Gender::male }}<br>
        {{ App\Enums\Gender::getDescription(1) }}
    </body>

OK👍🏻

サンプル(github)

今回テストしたコードをここに置いてます。

コメント

タイトルとURLをコピーしました