dkulyk / enum
PHP Enum Laravel 集成
1.2.5
2021-01-13 09:01 UTC
Requires
- ext-ctype: *
- illuminate/contracts: >=7.5.0
- myclabs/php-enum: ^1.7
README
为什么?
首先,也是最重要的,PHP 中没有集成 SplEnum,您必须单独安装它。
使用枚举代替类常量有以下优点
- 您可以进行类型提示:
function setAction(Action $action) { - 您可以丰富枚举以包含方法(例如
format,parse,…) - 您可以扩展枚举以添加新值(使枚举
final以防止修改) - 您可以获取所有可能的值的列表(见下文)
此 Enum 类不打算替换类常量,而仅在使用它有意义时使用。
安装
composer require dkulyk/enum
声明
use DKulyk\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()返回枚举当前值的键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'; }