PHP 8.1中如何判断变量是否为enum枚举类型?
PHP 8.1 枚举类型判断方法
核心结论
PHP 没有原生的is_enum函数,gettype($var) === 'enum'的判断逻辑也不成立——因为枚举实例本质是对象,gettype对枚举实例返回的值是object,不会返回enum字符串。
正确实现方式
1. 判断变量是否为任意枚举类型的实例
所有PHP枚举默认都实现了内置的\UnitEnum接口,你可以基于这个特性自己封装判断函数:
function is_enum(mixed $var): bool { return $var instanceof \UnitEnum; }
2. 判断变量是否为某一个指定枚举的实例
直接用instanceof关键字匹配目标枚举类即可,示例如下:
// 先定义一个测试枚举 enum StatusEnum { case SUCCESS; case FAIL; } $val = StatusEnum::SUCCESS; var_dump($val instanceof StatusEnum); // 输出 bool(true)
补充测试示例
enum TestEnum { case A; case B; } $test = TestEnum::A; var_dump(is_enum($test)); // bool(true) var_dump(gettype($test)); // string(6) "object"
内容的提问来源于stack exchange,提问作者Richi RM
相关产品推荐
相关产品推荐

