【完全版】PHPでenumを使いこなす5つの手順

PHPのenumを使いこなす方法を学ぶ人のイメージPHP
この記事は約8分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

あなたはプログラミングの世界に飛び込んで、新しいスキルを習得しようとしていますね。

そしてその中でも、「PHPでのenumの使い方」について学びたいと思っているかもしれません。

そのためにこの記事を読んでいるのではないでしょうか。もしそうなら、これ以上探す必要はありません。

この記事はまさにあなたのために書かれたものです。

ここでは、PHPでenumを使いこなすための5つの手順を詳しく解説していきます。

初心者でも理解できるように、わかりやすい言葉と具体的なコード例で説明します。

enumの基本的な使い方から応用例までをカバーすることで、あなたがenumを活用してより効率的なコードを書くスキルを身につけることを目指します。

さあ、始めましょう。

●enumとは

まずは基本から始めましょう。「enum」とは何でしょうか。

enumは”enumerated types”(列挙型)の略で、プログラミング言語で一連の関連する値を定義するための特殊な型です。

○PHPでのenumの利点

PHPでenumを使うと、コードが読みやすくなり、プログラムのロジックが明確になるという利点があります。

enumを使用することで、一連の関連する値を一つのグループとして扱うことができ、これによりコードの安全性を向上させることができます。

●PHPでのenumの作り方

では、PHPでenumをどのように作成するのか見ていきましょう。

PHPではenumはclassの一種として定義されます。

○サンプルコード1:基本的なenumの定義

PHPでenumを定義する基本的なコードは次のようになります。

<?php
enum DaysOfWeek {
    case Monday;
    case Tuesday;
    case Wednesday;
    case Thursday;
    case Friday;
    case Saturday;
    case Sunday;
}
?>

このコードでは、enumとしてDaysOfWeekを定義し、その中に一週間の曜日をcaseとして指定しています。

このようにすることで、一週間の曜日をDaysOfWeekというenumとして扱うことができます。

○サンプルコード2:enumのメソッドの使用

次に、enumには様々なメソッドを使用することができます。

その中でもよく使用されるnameメソッドとvalueメソッドを使ったコードを見てみましょう。

<?php
enum DaysOfWeek {
    case Monday;
    case Tuesday;
    case Wednesday;
    case Thursday;
    case Friday;
    case Saturday;
    case Sunday;
}

echo DaysOfWeek::Monday->value; // 0と出力されます。
echo DaysOfWeek::Monday->name; // Mondayと出力されます。
?>

このコードでは、enumDaysOfWeekの中からMondayを取り出し、そのvalueメソッドとnameメソッドを呼び出しています。

valueメソッドはenumの各caseの値(この例では0から6)を返し、nameメソッドはenumの各caseの名前(この例ではMondayからSunday)を返します。

●enumの応用例

enumはそのまま使用するだけでなく、様々な応用例があります。

その中でも特に一般的な3つの例を紹介します。

それぞれの例では、enumを使ってどのようにコードをより安全に、そして効率的に書くことができるのかを解説します。

○サンプルコード3:enumを使ったステータス管理

最初の例として、enumを使ったステータス管理を見ていきましょう。

これは、システム内のアイテムやユーザーのステータスを明確に表現するのに非常に役立ちます。

<?php
enum UserStatus {
    case Active;
    case Inactive;
    case Suspended;
}

$userStatus = UserStatus::Active;

echo $userStatus->name; // Activeと出力されます。
?>

このコードでは、enum UserStatusを定義し、ユーザーのステータをActiveInactiveSuspendedという3つの状態で管理しています。

その後、UserStatusの中からActiveを選択し、そのステータス名を出力しています。

○サンプルコード4:enumを使った日付管理

次に、enumを使った日付管理の例を見てみましょう。

これは、特定の日付範囲を管理するのに便利です。

<?php
enum Month {
    case January;
    case February;
    case March;
    case April;
    case May;
    case June;
    case July;
    case August;
    case September;
    case October;
    case November;
    case December;
}

$currentMonth = Month::June;

echo $currentMonth->name; // Juneと出力されます。
?>

このコードでは、enum Monthを定義し、一年の月をそれぞれのcaseとして管理しています。

その後、Monthの中からJuneを選択し、その月名を出力しています。

○サンプルコード5:enumを使ったロール管理

最後に、enumを使ったロール管理の例を見てみましょう。

これは、ユーザーのロールや権限を表現するのに適しています。

<?php
enum UserRole {
    case Admin;
    case Editor;
    case User;
}

$userRole = UserRole::Admin;

echo $userRole->name; // Adminと出力されます。
?>

このコードでは、enum UserRoleを定義し、ユーザーのロールをAdminEditorUserという3つのロールで管理しています。

その後、UserRoleの中からAdminを選択し、そのロール名を出力しています。

●enumを使う際の注意点と対処法

enumを使う上で注意すべき点とその対処法をいくつか紹介します。

まず、PHPのenumは他の言語のenumと比較して比較的新しい機能であり、PHP 8.1以降でのみ使用できます。

したがって、古いバージョンのPHPを使用している場合は、アップデートを検討するか、enumに代わる他の手段を探す必要があります。

次に、enumのcaseはユニークな名前を持つ必要があります。

同じ名前のcaseを持つことはできません。同じ名前のcaseが必要な場合は、名前の異なる新しいcaseを作成し、同じ値を持たせることで対処できます。

最後に、enumはクラスやインターフェイスを継承したり、実装したりすることはできません。

enumを使っていくつかの関連する値をグループ化したい場合は、その関連する値をcaseとしてenum内に配置します。

●enumのカスタマイズ方法

PHPのenumはカスタマイズ可能です。

つまり、enumにメソッドを追加して、より具体的な振る舞いを持たせることができます。

たとえば、次のようにisWeekendというメソッドを追加して、特定の曜日が週末であるかどうかを判断することができます。

<?php
enum DaysOfWeek {
    case Monday;
    case Tuesday;
    case Wednesday;
    case Thursday;
    case Friday;
    case Saturday;
    case Sunday;

    public function isWeekend(): bool {
        return $this === self::Saturday || $this === self::Sunday;
    }
}

echo DaysOfWeek::Tuesday->isWeekend(); // falseと出力されます。
echo DaysOfWeek::Sunday->isWeekend(); // trueと出力されます。
?>

このコードでは、DaysOfWeek enumにisWeekendメソッドを追加しました。

このメソッドは、選択された曜日がSaturdayまたはSundayである場合にtrueを返します。

まとめ

以上、PHPでenumを使いこなすための5つの手順をご紹介しました。

enumはコードの可読性を高め、エラーを減らすための強力なツールです。

enumを活用して、より効率的で安全なコードを書くことができます。

また、enumのカスタマイズ機能を利用して、さらに具体的な振る舞いを持たせることも可能です。

このガイドが、あなたがPHPでenumを上手に使うための手助けとなることを願っています。