概要
- PHP8.1から追加された列挙型(enum)について定義方法や使い方をまとめてみた。
定義方法(backed enum)
-
クラスのように定義する。
-
例えば「aaa」と「bbb」の2つの値をstr1、str2としてそれぞれ列挙したいとき下記のように定義する。
- 列挙型名: StrEnum
enum StrEnum: string { case str1 = 'aaa'; case str2 = 'bbb'; }
列挙した値を呼び出す(backed enum)
-
下記のように記載することで値を呼び出す事ができる。
列挙型名::キー名->value
-
今回のStrEnumの「aaa」を取得したい場合下記のように記載する。
enum StrEnum: string { case str1 = 'aaa'; case str2 = 'bbb'; } echo StrEnum::str1->value;
列挙下キー名を呼び出す(enum, backed enum)
-
下記のように記載することでキー名を呼び出す事ができる。
列挙型名::キー名->name
-
今回のStrEnumの「str1」を取得したい場合下記のように記載する。
enum StrEnum: string { case str1 = 'aaa'; case str2 = 'bbb'; } echo StrEnum::str1->name;
注意点
- 列挙型は列挙した値(キーやそれに紐づく値)の名前がついたオブジェクト(シングルトンオブジェクト)
-
オブジェクトなので
<
や>
では比較できない。これを行うと必ずfalseが返る。 -
公式によると下記の様になるらしい。
$a = StrEnum::str1; $a instanceof StrEnum; // true
-