This package is your Swiss Army knife when it comes to PHP 8.1's native enums. In this package you will find a lot of tools for the most common use cases, and more will be added in the future.
If you have an idea, or you miss something that needs to be added, just let me know.
Enumhancer is case-agnostic, which means Enum
equals ENUM
equals enum
. It
Is also agnostic in what type of enum you use. Which means you can use
numeric keys with basic and string backed enums as well as string keys with
basic and integer backed enums. New projects rarely needs more than basic
enums anyway.
Note: While functionality that also exists in Spatie's PHP Enum is made backwards compatible to allow for an easy migration to PHP native enums, currently this is not the case for the PHPUnit assertions or Faker Provider.
You can install the package via composer:
composer require henzeb/enumhancer
You can simply add the Enhancers
trait to your enum
in order to use almost
all functionality of this package. All features should work with unit
enums as
well as backed
enums' unless stated otherwise.
use Henzeb\Enumhancer\Concerns\Enhancers;
enum YourEnum {
use Enhancers;
// ...
}
You can also just use one of the features by using the specific trait for that feature.
Note: all traits can be used next to each other, except for Mappers
, which has
implemented the methods of Makers
, Extractor
and Reporters
.
- Constructor
- Comparison
- Defaults
- Extractor
- From
- Labels
- Makers
- Mappers
- Properties
- Reporters
- State
- Subset
- Value
When you are installing this package into a laravel project, Enumhancer will
automatically set the global Reporter
for the makeOrReport
methods, so that
it will use Laravel's Log
facade.
If you don't want that to happen, you can tell Laravel not to discover the package.
"extra": {
"laravel": {
"dont-discover": [
"henzeb/enumhancer"
]
}
}
composer test
Please see CHANGELOG for more information what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The GNU AGPLv. Please see License File for more information.