dkou/enum

PHP的枚举类

v1.0.0 2021-12-08 13:44 UTC

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(), 获取枚举成员【键】数组。