# php-enum **Repository Path**: ping_yuan/php-enum ## Basic Information - **Project Name**: php-enum - **Description**: PHP枚举类 - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-12-08 - **Last Updated**: 2022-02-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PHP枚举类 使用反射类实现枚举类,同时配置常用的函数。 ### 背景 枚举类型在开发过程中有广泛应用,如:设定状态,状态码等。而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(), 获取枚举成员【键】数组。