💨
PHPのEnumを使用してみる
PHP8.1からEnumが実装されましたが、自分は今までEnumの機構のあるプログラミング言語を触ったことがなく(TypeScriptはあるけどほぼEnumは使った事無し)どのような場面で使うのかよく分かってないので、増田 亨さんの現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法
にある料金タイプの例をPHPのEnumを使用して実装していく。
料金タイプの例
Enum FeeType: string
{
case ADULT = "adult";
case CHILD = "child";
case SENIOR = "senior";
/**
* @return int
*/
public function getFee(): int
{
return match($this) {
self::ADULT => 1000,
self::CHILD => 500,
self::SENIOR => 750,
};
}
}
- PHPのEnumはstringとint型のプリミティブな値しか持てないのでlabelに相当する文字列を割り当てています。
- JavaだとEnum自体に状態をPHPだと持てないのでEnumに直接料金を問い合わせます。
function getFee(FeeType $feeType)
{
return $feeType->getFee();
}
getFee(FeeType::ADULT);
感想
- シンプルで分かりやすい
- 他の言語のEnumと比べてちょい機能が制限されているので例示されているコードを真似るにはひと工夫必要そう
Discussion