dkou / enum
PHP的枚举类
v1.0.0
2021-12-08 13:44 UTC
Requires
- php: >=7.0
- ext-ctype: *
This package is not auto-updated.
Last update: 2025-06-20 05:41:18 UTC
README
使用反射类实现枚举类,同时配置常用的函数。
背景
枚举类型在开发过程中有广泛应用,如:设定状态,状态码等。而PHP8以下是没有枚举的支持的(SPL有提及基础的枚举类,但SPL需要额外安装而且个人感觉应用起来有一定局限性),最近更新的PHP8中就有添加枚举类型,说明枚举类型确实有广泛的应用需求,但不是每个项目都能马上升级PHP8,因此自己整理一个枚举类。
应用场景
- 字段状态的枚举,用作穷举出所有状态值,比如:一个活动状态,订单状态等。我们比较习惯自己定义常量,这样是不符合面向对象的思路的。
- API错误码设计管理。
本枚举类的好处
- 代码层限制变量的取值范围,提高代码维护性,确保变量合法。
- 提高代码可读性,对IDE友好,有对应的枚举值提示。
- 封装常用方法,如:校验值是否合法,获取所有枚举值的key/value等。
用法
直接继承,然后根据业务员添加枚举值即可,以下为使用例子:
class ActivityStatusEnum extends Enum
{
// 默认值
const __default = self::WAIT_OPEN;
// 待发布
const WAIT_OPEN = 0;
// 报名中
const SING_IN = 1;
// 进行中
const ONGOING = 2;
// 结束
const END = 3;
}
[强制] 枚举值命名格式:大写字母+下划线。
方法使用
- self::isKey($key),校验键是否存在。
- self::isValid($val),校验值是否存在。
- self::toArray(), 键值对形式输出所有枚举成员。
- self::values(), 获取枚举成员【值】数组。
- self::keys(), 获取枚举成员【键】数组。