ggergo/enum

PHP 的 Enum 实现库

v1.0.1 2020-09-09 22:29 UTC

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": "*"
    }
}