laudis/typed-enum

允许进行类型枚举的小型类。

1.3.2 2022-01-04 23:33 UTC

This package is auto-updated.

Last update: 2024-09-05 05:32:20 UTC


README

Typed-enum 是一个简单、轻量级且高效的枚举库。高效且严格地对枚举选项进行类型提示,以消除由拼写错误引入的不期望的副作用和错误。

如何使用

下载

使用 composer 下载

从 TypedEnum 扩展

从 TypedEnum 扩展并使用任何标量常量来定义枚举

final class Foo extends TypedEnum {
    private const BAR = 'bar';
    private const BAZ = 2;
    private const FOO = 2.1;
} 

您现在可以使用基于常量名称的 __callstatic 方法来创建 Foo 的实例

Foo::BAR();  // Returns an instance of Foo with value 'bar'

测试相等性

作为奖励,您现在可以使用严格的比较。TypedEnum 保证在运行时只有一个相同的枚举值的实例。

function isBar(Foo $enum): bool {
    return Foo::BAR() === $enum;     
}

返回实际值

如果您的应用程序依赖于枚举分配的值,您可以使用 getValue() 属性轻松获取它。

echo Foo::BAR()->getValue(); //'bar'

解析枚举

根据其值解析枚举。resolve 方法将返回具有相同值的所有枚举的数组。

echo Foo::resolve('bar')[0] === Foo::BAR() // true 

技巧

IDE 集成

您可以通过在类文档块的 @method 标签中添加类似这样的标签,轻松地使用您 ide 的功能:

/**
 * @method static TypedEnum TEST()
 */
final class Foo extends TypedEnum {
    private const TEST = 'test';
}

Psalm

我们用 psalm 构建 TypedEnum!有了这些强大的注释,您现在可以提示枚举的标量值。

/**
 * @extends TypedEnum<string>
 */
final class Foo extends TypedEnum {
    private const TEST = 'test';
}

简单的错误保护

PHP 7.2 允许使用受保护的常量,而 7.4 使用私有常量。使用这些功能来防止意外的副作用!

echo Foo::BAR === Foo::BAR() // echo's false but is impossible if it is a protected constant

laudis 开发