brzez/ php-magic-enum
v0.9.8
2016-06-19 16:04 UTC
Requires (Dev)
- phpunit/phpunit: ^4.8
This package is not auto-updated.
Last update: 2024-09-24 21:01:52 UTC
README
易于使用和扩展PHP的枚举值对象
概述
PHP缺少枚举。每个人通常只是使用const值,这实际上并不提供类型安全,并且可以创建混乱的代码。
这可能是对这个问题的解决方案。它提供了一个枚举值对象。
这个魔法枚举可以通过魔法方法(名称与const相同)实例化,这些方法创建具有const值的新枚举实例。
示例枚举
class OrderStatus extends \MagicEnum\MagicEnum { const CREATED = 1; const COMPLETE = 2; const CANCELLED = 3; const PROCESSING = 4; // easy way to extend with the status (for labels/translations etc) public function getLabel() { $name = strtolower($this->getName()); return "order_status.${name}"; } }
用法
// create new instance: $status = OrderStatus::PROCESSING(); $status->getValue() // => 4 // type safety public function setStatus(OrderStatus $status) { $this->status = $status; } // safe setter (but less annoying) public function setStatus($status) { if($status instanceof OrderStatus){ $this->status = $status; }else{ $this->status = new OrderStatus($status); // this validates if $status is defined in OrderStatus const values } }
额外功能
{# it's easy to extend the enums with some additional features for example: #} {{ order.status.label|trans }}
待办事项
- 添加到Packagist
- 编写通过Composer安装的帮助
- 编写更多用法帮助