philiagus / enum
此包已被废弃,不再维护。作者建议使用 PHP8.1 枚举实现 包。
选择不同枚举实现的方案
v2.1.0
2022-11-04 12:04 UTC
Requires
- php: >=8.0
- ext-json: *
Requires (Dev)
- ext-xdebug: *
- phpunit/phpunit: *
README
选择不同枚举实现的方案
Philiagus\Enum\ConstantEnumTrait
ConstantEnumTrait 将类中可用的每个常量视为有效的枚举值。只需将其作为特质在您想用作枚举的类中使用。该特质提供了多种方法
-
enumAll(): array以数组形式列出类中的所有枚举。键是常量名称,值是枚举的值。
-
enumHas($value): bool如果提供的值与该类中某个常量的值相同,则返回
true。 -
enumAssert($value): void断言提供的值与该类中某个常量的值相同。如果提供的值无效,则抛出
Philiagus\Enum\Exception\InvalidEnumException。 -
enumAssertArray(array $values): void断言数组中的每个元素都是有效的枚举,如果存在无效值,则抛出
Philiagus\Enum\Exception\ValuesNotInEnumException。
Philiagus\Enum\PublicConstantEnumTrait
与 Philiagus\Enum\ConstantEnumTrait 完全相同,但只将公共常量视为有效值。
Philiagus\Enum\CommentEnum
此实现提供了枚举,这些枚举是提供枚举的类的实现,因此我们谈论的是具有类型提示等所有优势的真正对象。
<?php /** * @method static SomeEnum VALUE_ONE * @method static SomeEnum VALUE_TWO */ class SomeEnum extends \Philiagus\Enum\CommentEnum { } $anEnumValue = SomeEnum::VALUE_ONE(); function doSomething(SomeEnum $value): void { switch ($value) { // objects work with switch construct case SomeEnum::VALUE_ONE(): echo 'ONE'; break; case SomeEnum::VALUE_TWO(); echo 'TWO'; break; } } doSomething($anEnumValue); // would print 'ONE' var_dump(SomeEnum::all()); /* Prints an array with the keys being the enum names (VALUE_OND and VALUE_TWO) and the values being the corresponding enum instances. */
此示例创建了一个具有有效枚举值 VALUE_ONE 和 VALUE_TWO 的枚举类。稍后使用这些方法检索它们。
为什么是方法?
答案:这些可以被IDE提示,并且大多数IDE可以找到它们的用法。
我能否向类中添加自己的方法?
是的!使用此方法,您可以添加功能或更多信息到您的枚举中。