世界を旅して暮らしたい放浪エンジニアブログ

【技術メモ】laravel-enumがバージョンアップしていることに気づいた・・・

laravel-enumのマイナーバージョンがアップしていることに気づきました。早速案件に導入して試してみました。

[ 目次 ]

はじめに

こんにちは、香港に住んでいるWEBデベロッパーのなかむ(@nakanakamu0828)です。

以前の投稿「LaravelにてEnumを導入する 」で紹介しましたが、私はBenSampo/laravel-enumを利用しています。
本日 READMEを確認していたところバージョンアップしていることに気づきました。

その内容をメモとして残します!!

BenSampo/laravel-enum

laravel-enumのEnumクラスをインスタンス化する

今回気づいた機能は以下です。

getInstance(string|int $enumValue): Enum

getInstanceというstatic関数を利用することでEnumクラスのインスタンスを取得することができるようになりました!!

こちらの機能は、1.17.0から導入されたようです!
以下のような方法でインスタンス化できます。

// Standard new PHP class, passing the desired enum value as a parameter
$enumInstance = new UserType(UserType::Administrator);

// Static getInstance method, again passing the desired enum value as a parameter
$enumInstance = UserType::getInstance(UserType::Administrator);

// Statically calling the key name as a method
$enumInstance = UserType::Administrator();

どのように利用するのか?

関数の引数にEnumのインスタンスが渡せるようになりました!!
インスタンスを渡す例は。。。

// Enum定義
final class UserType extends Enum
{
    const Administrator = 0;
    const Moderator = 1;
    const Subscriber = 2;
    const SuperAdministrator = 3;
}

// 引数にEnumクラスを定義
public function hoge(UserType $userType)
{

}

// Administratorを引数に渡す!
hoge(UserType::Administrator());

今まで何が良くなかったのか?

// 引数にEnumクラスを定義
public function hoge(int $userType)
{

}

// Administratorを引数に渡す!
hoge(UserType::Administrator);


// 引数がintなのでマジックナンバーでも動く
hoge(0);

hoge関数の引数がintやstringになることで、Enumで定義していない値を渡すことができます。
これは微妙ですね。
改善されてよかったです!!

前のページ

次のページ

Profile

なかむ🇭🇰Webデベロッパー

なかむ🇭🇰Webデベロッパー

香港在住4年目になるWEBエンジニアのなかむです。 現在は、LaravelやRailsを利用したWEB開発を中心にエンジニアをしています。 顧客は全て日本の企業になります。リモート開発にて各企業様の支援を行なっております

プロフィール詳細はこちら

Latest Posts