VictorWesterlund / xenum
PHP 扩展枚举。PHP 8+ 枚举所缺失的实用功能
1.1.1
2023-11-20 10:10 UTC
This package is auto-updated.
Last update: 2024-09-20 12:05:19 UTC
README
PHP 8+ 枚举所缺失的实用功能。
此库为您的 PHP 枚举添加了一些有用的特性,以补充现有内置功能。
例如,
use \victorwesterlund\xEnum; enum HelloWorld: string { use xEnum; case FOO = "BAR"; case BAZ = "QUX"; } // Like Enum::from() but for Enum names instead of values HelloWorld::fromName("FOO"); // HelloWorld::FOO // And of course the non-throwing version similar to Enum::tryFrom() HelloWorld::tryFromName("MOM"); // null
使用方法
需要 PHP 8.0 或更高版本
-
通过 composer 安装
composer require victorwesterlund/xenum
-
在项目中
use
use \victorwesterlund\xEnum;
-
在枚举中使用
use
enum HelloWorld { use xEnum; }
方法
此库实现的所有方法
Enum::fromName()
从案例名称解析枚举案例或如果未找到案例则抛出 ValueError
。
类似于: Enum::from()
Enum::fromName(int|string|null): static
示例
enum HelloWorld: string { use xEnum; case FOO = "BAR"; case BAZ = "QUX"; } HelloWorld::fromName("FOO"); // HelloWorld::FOO HelloWorld::fromName("MOM") // ValueError: 'MOM' is not a valid case for HelloWorld
Enum::tryFromName()
从案例名称解析枚举案例或如果没有找到匹配项则返回 null
。
类似于: Enum::tryFrom()
Enum::tryFromName(int|string|null): static|null
示例
enum HelloWorld: string { use xEnum; case FOO = "BAR"; case BAZ = "QUX"; } HelloWorld::tryFromName("FOO"); // HelloWorld::FOO HelloWorld::tryFromName("MOM") // null
Enum::names()
返回枚举案例名称的顺序数组
Enum::names(): array
示例
enum HelloWorld: string { use xEnum; case FOO = "BAR"; case BAZ = "QUX"; } HelloWorld::names(); // ["FOO", "BAZ"]
Enum::values()
返回枚举案例值的顺序数组
Enum::entries(): array
示例
enum HelloWorld: string { use xEnum; case FOO = "BAR"; case BAZ = "QUX"; } HelloWorld::values(); // ["BAR", "QUX"]
Enum::entries()
返回一个包含枚举名称和值的关联数组。此方法类似于 JavaScript 的 Object.entries()
Enum::entries(): array
示例
enum HelloWorld: string { use xEnum; case FOO = "BAR"; case BAZ = "QUX"; } HelloWorld::entries(); // ["FOO" => "BAR", "BAZ" => "QUX"]