ggergo / enum
PHP 的 Enum 实现库
v1.0.1
2020-09-09 22:29 UTC
Requires
- php: ^7.1
Requires (Dev)
- phpunit/phpunit: ^7
This package is not auto-updated.
Last update: 2024-09-21 13:57:46 UTC
README
目标
处理 Enum 参数
function(MyEnumInterface $myEnum)
{
}
始终使用实例而不是字符串
$myEnum = MyEnum::MY_CONSTANT();
// won't work if you use private constants
$myEnum = MyEnum::MY_CONSTANT;
比较
$myEnum.isEqual(MyEnum::MY_CONSTANT());
避免在每个 Enum 实现中重新实现函数
...
class MyEnum extends Enum implements ClassMapEnumInterface, LabelMapEnumInterface
{
use ClassMapEnumTrait;
use LabelMapEnumTrait;
...
使 DEFAULT 不是特殊的
// Start constant names with underscore when defining not unique values, like a default value.
private const _DEFAULT = self::APPLE;
在转换时访问原生值
$myEnum->getValue();
在反向转换时从原生值创建实例
$myEnum = MyEnum::createByValue($myValue);
为每个 Enum 抽象使用缓存以节省内存并加快对常量和 Enum 实例的访问速度。
示例实现
查看 src/Mock/SimpleFruitEnum.php 了解简单实现。
查看 src/Mock/FruitEnum.php 了解如何扩展功能。
安装
使用 composer 需要,例如。
{
"require": {
"ggergo/enum": "*"
}
}