convoflo / ordered-enum
Give your enums an order. Provides utilities such as greaterThan, lessThan, min, max and more.
Installs: 28
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/convoflo/ordered-enum
README
This package gives your enums an order. It provides helper utilities such as ->greaterThan()
, ->lessThan()
, ::min()
, ::max()
and more.
Installation
You can install the package via composer:
composer require convoflo/ordered-enum
Usage
This is how an ordered enum can be defined.
use \Convoflo\OrderedEnum\OrderedBackedEnum; use \Convoflo\OrderedEnum\OrderedTrait; enum UserRole: string implements OrderedBackedEnum { use OrderedTrait; case Admin = 'admin'; case Regular = 'user'; case Basic = 'basic'; public static function order(): array { return [self::Basic, self::Regular, self::Admin]; } }
Here's how ordered enums are used with their helpers:
$showAdminConsole = $userRole->greaterThan(UserRole::Regular); $showMinimalInterface = $userRole->lessThan(UserRole::Regular); $isNotBasic = $userRole->greaterThanOrEqualsTo(UserRole::Regular); $isNotAdmin = $userRole->lessThanOrEqualsTo(UserRole::Regular); UserRole::min(UserRole::Basic, UserRole::Admin); // UserRole::Basic UserRole::max(UserRole::Basic, UserRole::Admin); // UserRole::Admin $highestRole = UserRole::max(); // UserRole::Admin $lowestRole = UserRole::min(); // UserRole::Basic
Credits
License
The MIT License (MIT). Please see License File for more information.