enum_exists

関数の概要

PHPのenum_exists関数は、指定した名前のenum(列挙型)が現在のスクリプトで定義されているかどうかを確認するための関数です。PHP 8.1以降で導入されたenum機能において、特定のenumが存在するかどうかを安全にチェックしたい場合に利用されます。

パラメータの説明

  • string $enum — 存在を確認したいenumの名前(完全修飾クラス名も指定可能)
  • bool $autoload = true — オートロードを実行するかどうか(デフォルトはtrue)。trueの場合、enumがまだ読み込まれていなくても自動的に読み込もうとします。

戻り値

enum_existsは、指定した名前のenumが存在していればtrue、存在しなければfalseを返します。クラスやインターフェースではなくenumの場合のみtrueとなるため、他のタイプのクラス名と区別して使用できます。

使用例

基本的な使い方

enum Color {
    case Red;
    case Green;
    case Blue;
}

var_dump(enum_exists('Color')); // bool(true)
var_dump(enum_exists('Shape')); // bool(false)

この例では、enum「Color」が存在するのでtrue、定義されていない「Shape」はfalseを返します。

名前空間を含むenumの確認

namespace AppEnums;

enum Status {
    case Active;
    case Inactive;
}

var_dump(enum_exists('AppEnumsStatus')); // bool(true)
var_dump(enum_exists('AppEnumsRole'));   // bool(false)

名前空間がある場合は、完全修飾名でenum_existsに渡すことで正しく判定できます。

autoloadを無効にして使用

var_dump(enum_exists('SomeEnum', false)); // オートロードしない場合

第2引数にfalseを渡すと、自動読み込みを行わず既に読み込まれているenumのみ存在チェックを行います。環境によって動作を制御したい時に使います。

関連する関数

  • class_exists — クラスの存在を確認
  • interface_exists — インターフェースの存在を確認
  • trait_exists — トレイトの存在を確認

まとめ

enum_existsは、PHP 8.1以降で使えるenumの存在を簡単にチェックできる便利な関数です。自作のenumやライブラリ提供のenumが読み込まれているかどうかを確かめたい場面で役立ちます。パラメータに名前空間を含めることができ、autoloadの有無も指定可能なので、実務でも応用しやすく安全にenumを扱えます。