15
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHP8.1で登場した列挙型(Enum)とオブジェクト(object)を区別する方法

Last updated at Posted at 2022-08-17

gettype()だと判別できないし、is_enum()関数も無いし、EnumかEnum以外か どうやって判断すれば良いんだ………!?とハマったのでメモ。

🌟 結論

Enumかどうかは、「UnitEnumインターフェイスのインスタンスかどうか」で判定する。

if( $hogeEnum instanceof UnitEnum ) {}

このインターフェイスは、型チェックのためだけに存在しています。

と、以下のUnitEnumのページに書かれていますね。

💬 ちなみに・・・Enumとオブジェクトの違い

Enumはオブジェクトとして扱われるのでis_object()trueになります。

$hogeEnum = HogeEnum::FUGA;
$hogeObject = new HogeObject();

is_object($hogeEnum); // true
is_object($hogeObject); // true
$hogeEnum instanceof UnitEnum; //true
$hogeObject instanceof UnitEnum; // false

Enumとオブジェクトとの違いについてはこちらのページに詳しく書かれています。

15
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?