b2b / enum
PHP 枚举实现
1.0.2
2018-03-11 21:24 UTC
Requires
- php: >=7.0.0
This package is not auto-updated.
Last update: 2024-09-13 01:53:13 UTC
README
为什么?
首先,主要的是 SplEnum 并未集成到 PHP 中,您需要单独安装。
使用枚举而不是类常量提供以下优势
- 您可以进行类型提示:
function setAction(Action $action) { - 您可以丰富枚举以包含方法(例如
format、parse、…) - 您可以扩展枚举以添加新值(使您的枚举
final以防止扩展) - 您可以得到所有可能值的列表(见下文)
此 Enum 类并不旨在取代类常量,而只是在有意义的场合使用。
安装
composer require b2b/enum
声明
use B2B\Enum\Enum; /** * Action enum */ class Action extends Enum { const VIEW = 'view'; const EDIT = 'edit'; }
使用
$action = new Action(Action::VIEW); // or $action = Action::VIEW();
如您所见,静态方法已自动实现,以提供对枚举值的快速访问。
使用类常量的一个优势是可以对枚举值进行类型提示
function setAction(Action $action) { // ... }
文档
__construct()构造函数检查值是否存在于枚举中__toString()您可以echo $myValue,它将显示枚举值(常量的值)getValue()返回枚举的当前值getKey()返回当前值在 Enum 上的键equals()测试枚举实例是否相等(如果枚举值相等则返回true,否则返回false)
静态方法
toArray()方法返回所有可能值作为数组(键为常量名,值为常量值)keys()返回 Enum 类中所有常量的名称(键)values()返回所有 Enum 常量的 Enum 类实例(键为常量名,值为 Enum 实例)isValid()检查测试值是否在枚举集中有效isValidKey()检查测试键是否在枚举集中有效search()返回搜索值的键
静态方法
class Action extends Enum { const VIEW = 'view'; const EDIT = 'edit'; } // Static method: $action = Action::VIEW(); $action = Action::EDIT();
使用 __callStatic() 实现了静态方法辅助程序。
如果您关心 IDE 自动完成,您可以自己实现静态方法
class Action extends Enum { const VIEW = 'view'; /** * @return Action */ public static function VIEW() { return new Action(self::VIEW); } }
或者,您可以使用 phpdoc(例如,PhpStorm 支持)
/** * @method static Action VIEW() * @method static Action EDIT() */ class Action extends Enum { const VIEW = 'view'; const EDIT = 'edit'; }