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)
今回テストしたコードをここに置いてます。
コメント