vaened / php-enum
PHP 枚举支持
V2.1.0
2022-09-29 20:46 UTC
Requires
- php: ^8.0
Requires (Dev)
- phpunit/phpunit: ^9.0
- symfony/var-dumper: ^6.0
This package is auto-updated.
Last update: 2024-08-29 05:19:06 UTC
README
友好的枚举实现。
$status = Status::WARNING(); $status->key(); // WARNING $status->value(); // Advertencia // custom attribute $status->getColor(); // yellow
安装
PHP Enum 需要 PHP 8。
要获取最新版本,只需使用 Composer 请求项目
$ composer require vaened/php-enum
声明
要创建枚举,需要从 Vaened\Enum\Enum
继承,同时为枚举的每个值创建常量。这个库可以为每个枚举添加属性,与 Java 中的枚举非常相似。
<?php namespace App\Enums; use App\Color; use Vaened\Enum\Attributor; use Vaened\Enum\Enum; class Status extends Enum { // Enums public const WARNING = 'Advertencia'; public const SUCCESS = 'Exito'; }
使用
一旦实现枚举,您可以使用其值如下。该库使用 __callStatic
来创建指定枚举的实例,根据请求的值。
use App\Enums\Status; // returns an instance of Status, with the value of the constant WARNING Status::WARNING();
如果需要自动完成 ID,您可以手动定义方法。
class Status extends Enum { public const WARNING = 'Advertencia'; public static function WARNING(): self { return self::create(self::WARNING); } }
或者,如果您使用支持 phpdocs 的某些 ID,您可以这样做
/** * Class Status * * @method static Status WARNING() */ class Status extends Enum { public const WARNING = 'Advertencia'; }
高级
可能存在需要向枚举添加某些附加属性的具体情况。为此,您需要重写所有 Enum
子类中可用的受保护静态方法 attributes,在这里您必须定义每个枚举将使用的属性。
必须使用
Vaened\Enum\Attributor
类。
Attributor::to('CONSTANT', [ 'name' => 'value' ]);
要获取任何属性,您可以使用接受属性名称作为参数的受保护方法 attribute。
class Status extends Enum { public const SUCCESS = 'Éxito'; public function getColor(): Color { return $this->attribute('color'); } protected static function attributes(): array { return [ Attributor::to('SUCCESS', [ 'color' => new Color('blue'), ]), ]; } }
API
更多文档
您可以在源代码中找到很多注释,以及位于 tests
目录中的测试。