Enum(列挙型)は、オブジェクト指向言語ではおなじみのデータ型ですが、PHP8.1でついに使えるようになりました。
JavaやC++を知ってる人にはかんたんです。ほぼ同じような仕様になってるので。
新しく追加された機能なので、もちろん、8.0以下との互換性はありません。
(8.0以下では文法エラーになる。)
Enum は定数をまとめたもの
Enumは定数をまとめたデータ型。
それだけなら大したものではないんですが、値のない定数をもてる特長があります。
プログラミングでは、値はどうでもいい定数が必要なときがあります。そのときは適当に1から番号を値を入れたりする。
(番号に意味はない。)
そんなとき定数名だけを定義できるEnumは便利です。
enum Color
{
case Red;
case Green;
case Blue;
case Yellow;
case White;
case Black;
}
くわしくはこちらをどうぞ。
Enumはメジャーなオブジェクト指向言語にはすでにあるのですが、PHP8.1になってからやっと追加されました。
仕様もJavaやC++と似ているので、それらを扱ったことのある人にはかんたんでしょう。
かなり前からPHPもオブジェクト指向を採用していたんですが、ますますその傾向が進んだ形。
一般的には定数値をもたない Enum ですが、値をもつこともできます。Backed Enum といいます。
enum Color: string
{
case Red = 'red';
case Green = 'green';
case Blue = 'blue';
case Yellow = 'yellow';
case White = 'white';
case Black = 'black';
}
メソッドの追加などクラスの性格もあるEnum
Enumは、たんに定数だけをまとめたものではありません。クラスの一種でメソッドやインターフェイスを追加できます。
(ただし継承はできない。)
const を使った定数も追加できます。最初は『その定数いる?』と思いますが、意外と使い道はある。
トレイトだって使えます。
また、一部分ですがシリアライズもできます。
これらの機能が PHP の Enum の主な機能です。くわしくは PHP のドキュメントを参考にしてください。
(といってもほぼすべてを紹介したが。)
PHP公式ドキュメント