ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

PHP8.1, ついに追加されたEnum(列挙型)。...で、それは何? 何のためのもの?

php
イラストダウンロードサイト【イラストAC】
の画像をもとに加工しています。

Enum(列挙型)は、オブジェクト指向言語ではおなじみのデータ型ですが、PHP8.1でついに使えるようになりました。

JavaやC++を知ってる人にはかんたんです。ほぼ同じような仕様になってるので。

新しく追加された機能なので、もちろん、8.0以下との互換性はありません。

(8.0以下では文法エラーになる。)

Enum は定数をまとめたもの

Enumは定数をまとめたデータ型。

それだけなら大したものではないんですが、値のない定数をもてる特長があります。

プログラミングでは、値はどうでもいい定数が必要なときがあります。そのときは適当に1から番号を値を入れたりする。

(番号に意味はない。)

そんなとき定数名だけを定義できるEnumは便利です。

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の定義
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 のドキュメントを参考にしてください。

(といってもほぼすべてを紹介したが。)

前の投稿
PHP8.1, '=' での $GLOBALS の代入は参照渡しでなくなる。読込専用のコピー。
PHP8.1, Enum(列挙型)の追加。定数専用のクラス。
次の投稿

コメントを残す