erikaraujo / php-enhanced-enums
Enhanced enum methods for PHP enums
Installs: 7 315
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: ^8.1
Requires (Dev)
- laravel/pint: ^1.15
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^11.1
This package is auto-updated.
Last update: 2025-02-22 12:14:34 UTC
README
Enhanced Enum methods for PHP Enums
In this package, we have 4 traits: EnhancedEnum
, HasDescription
, HasLabel
and IsSelectArray
. Here are all the methods that each trait provides:
EnhancedEnum
parse()
This method is simply an alias to the native from()
method. Here's an example:
Suit::parse('hearts'); // Returns the Suit::Hearts case Suit::parse('invalid'); // Throws an exception
tryParse()
This method is an improved alias to the tryFrom()
method. The difference here, is that, instead of only having the $value
parameter, it also has a $ignoreCase
boolean parameter to allow the method to ignore the case of the value before parsing it. Here's an example:
Suit::tryParse('hearts'); // Returns the Suit::Hearts case Suit::tryParse('invalid'); // Returns null Suit::tryParse('hEaRtS'); // Returns null Suit::tryParse('hEaRtS', ignoreCase: true); // Returns the Suit::Hearts case
tryFromIgnoringCase()
// TODO
tryParseIgnoringCase()
An alias to tryFromIgnoreCase()
.
getNames()
This method returns an array with all the names of the enum cases. Here's an example:
Suit::getNames(); // Returns ['Hearts', 'Diamonds', 'Clubs', 'Spades']
getValues()
This method returns an array with all the values of the enum cases. Here's an example:
Suit::getValues(); // Returns ['hearts', 'diamonds', 'clubs', 'spades']
isDefined()
This method checks if a given value is defined in the enum. Here's an example:
Suit::isDefined('hearts'); // Returns true Suit::isDefined('invalid'); // Returns false Suit::isDefined('hEaRtS'); // Returns false Suit::isDefined('hEaRtS', ignoreCase: true); // Returns true
toString()
This method returns the value of the enum as string - even if it's an integer enum.
is()
TODO: describe
Suit::Hearts->is(Suit::Spades); // Returns `false` Suit::Hearts->is('spades'); // Returns `false` Suit::Hearts->is(Suit::Hearts); // Returns `true` Suit::Hearts->is('hearts'); // Returns `true` Suit::Hearts->is('HeArTs'); // Returns `false` Suit::Hearts->is('HeArTs', ignoreCase: true); // Returns `true`
getBackingType()
// TODO: describe
Suits::getBackingType(); // returns the `ReflectionNamedType`. In this case, with `string` as a `name`.
getUnderlyingType()
An alias to getBackingType()
isIntEnum()
Returns if the enum's backing type is an integer.
Suit::isIntEnum(); // Returns false
isStringEnum()
Returns if the enum's backing type is a string.
Suit::isStringEnum(); // Returns true
getRandom()
Returns a random enum case.
getCaseByPosition()
tryGetCaseByPosition()
first()
last()
HasDescription
getDescription()
Returns the description of the given enum
Suit::Hearts->getDescription(); // Returns "The suit of hearts"
getDescriptions()
Returns an array of all the descriptions
Suit::getDescriptions();
tryFromDescription()
tryFromDescriptionIgnoringCase()
HasLabel
getLabel()
getLabels()
tryFromLabel()
tryFromLabelIgnoringCase()
shouldAutoGenerateLabelFromValue()
protected