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 或更高版本

  1. 通过 composer 安装

    composer require victorwesterlund/xenum
    
  2. 在项目中 use

    use \victorwesterlund\xEnum;
  3. 在枚举中使用 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"]