henzeb/enumhancer

您用于 PHP 8.1+ 原生枚举的框架无关瑞士军刀


README

Build Status Test Coverage Total Downloads Latest Version on Packagist License

此包是您在 PHP 8.1 的原生枚举方面的框架无关瑞士军刀。在这个包中,您将找到许多用于最常见用例的工具,未来还将添加更多。

如果您有任何想法,或者您缺少需要添加的内容,请告诉我。

Enumhancer 不区分大小写,这意味着 Enum 等于 ENUM 等于 enum。这是基于这样的想法:拥有两个名称相同但大小写不同的不同枚举是没有意义的。

它也不区分类型。这样,您可以尽可能避免与支持枚举带来的额外工作。

注意:尽管 Spatie 的 PHP Enum 中存在的大部分功能都已向后兼容,允许轻松迁移到 PHP 原生枚举,但目前这并不适用于他们的 laravel 包、PHPUnit 断言或 Faker 提供程序。

安装

您可以通过 composer 安装此包

composer require henzeb/enumhancer

用法

您只需将 Enhancers 特性添加到您的 enum 中,就可以使用此包的大部分功能。所有功能都应与 基本 枚举以及 支持 枚举一起工作,除非另有说明。

use Henzeb\Enumhancer\Concerns\Enhancers;

enum YourEnum {
    use Enhancers;

    // ...
}

您还可以仅使用特定功能的特定特性。

注意:所有特性都可以一起使用,但除了 Mappers 之外,它已经实现了 GettersExtractorReporters 的方法。

功能

辅助函数

开发

Laravel 特定功能

Laravel 的自动发现

当您将此包安装到 Laravel 项目中时,Enumhancer 会自动设置宏的 验证规则,并为 getOrReport 方法设置全局 报告者,以便它使用 Laravel 的 Log 门面。

如果您不希望这样做,可以告诉 Laravel 不要发现此包。

"extra": {
        "laravel": {
            "dont-discover": [
                "henzeb/enumhancer"
            ]
        }
    }

测试

composer test

PHPStan 集成

如果您正在使用 PHPStan 进行静态分析,您可以使用此扩展。

将以下内容添加到您的项目 phpstan.neon

includes:
- vendor/henzeb/enumhancer/extension.neon

更改日志

请参阅 CHANGELOG 以获取有关最近更改的更多信息。

贡献

请参阅 CONTRIBUTING 以获取详细信息。

安全

如果您发现任何安全问题,请通过电子邮件 henzeberkheij@gmail.com 而不是使用问题跟踪器。

鸣谢

许可

GNU AGPLv。请参阅 许可文件 以获取更多信息。