PHP code example of bensondevs / supercharged-enums
1. Go to this page and download the library: Download bensondevs/supercharged-enums library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
bensondevs / supercharged-enums example snippets
use BensonDevs\SuperchargedEnums\EnumExtension;
enum Status: string
{
use EnumExtension;
//
}
use BensonDevs\SuperchargedEnums\EnumExtension;
enum Status: string
{
use EnumExtension;
case Draft = 'draft';
case Published = 'published';
}
Status::find('published'); // Status::Published
Status::findOrDefault('archived'); // Status::Draft (falls back to default)
Status::find('published', strict: true); // Backing values only, no aliases
Status::default(); // First declared case (cases()[0]); override on your enum to return any case
Status::getDefault(); // Alias for default()
Status::random(); // A random declared case
enum Priority: string
{
use EnumExtension;
// Declared first → default() returns Priority::Medium
case Medium = 'medium';
case Low = 'low';
case High = 'high';
}
Priority::default(); // Priority::Medium
Priority::findOrDefault('urgent'); // Priority::Medium (unknown key)
// To change the default, reorder cases — put Low first instead:
enum Priority: string
{
use EnumExtension;
case Low = 'low';
case Medium = 'medium';
case High = 'high';
}
Priority::default(); // Priority::Low
// Or override default() — keep declaration order, pick any case:
enum Priority: string
{
use EnumExtension;
case Medium = 'medium';
case Low = 'low';
case High = 'high';
public static function default(): static
{
return self::Low;
}
}
Priority::default(); // Priority::Low
Status::find('published'); // Status::Published — resolve self, backing scalar, or null
Status::find('unknown'); // null when nothing matches
Status::findOrDefault('unknown'); // Status::Draft — find() or default() when lookup fails
Status::find('published', strict: true); // Backing values only (no aliases)
public function alias(): array
{
return match ($this) {
self::Active => ['legacy_active'],
default => [],
};
}
EnumWithAliases::find('legacy_active'); // Active
EnumWithAliases::find('legacy_active', strict: true); // null
EnumWithAliases::findOrDefault('nope'); // First (default case)
$status = Status::Draft;
$status->getKey(); // 'draft' — the backing value ($this->value)
$status->getName(); // 'Draft' — human label derived from the case name
Status::options(); // ['draft' => 'Draft', 'published' => 'Published'] — backing value → short label
Status::asSelectOptions(); // Alias for options()
Status::asSelectDescriptions(); // Backing value → longer description text
public static function selectables(): array
{
return [self::Beta, 'gamma'];
}
public static function unselectables(): array
{
return [self::Hidden, 'archived'];
}
use BensonDevs\SuperchargedEnums\Common\Calendar\Month;
$month = Month::March;
$month->isIn(['october', 'march', 'june']); // true — backing values in the list
$month->isIn([Month::October, Month::March]); // true — cases in the list
$month->isNotIn(['december']); // true
$month->isNotIn([Month::December]); // true
// Backing string
$month->isBefore('october'); // true
$month->isAfter('october'); // false
// Enum instance
$month->isBefore(Month::October); // true
$month->isAfter(Month::October); // false
$month->isBeforeOrEqual(Month::October); // true
$month->isAfterOrEqual(Month::October); // false
$month->compareTo('october'); // -1, 0, 1, or null when other does not resolve
$month->compareTo(Month::October); // -1
use BensonDevs\SuperchargedEnums\Concerns\EnumComparisons;
use BensonDevs\SuperchargedEnums\Concerns\EnumLookup;
enum Direction: string
{
use EnumComparisons;
use EnumLookup;
case Left = 'left';
case Right = 'right';
}
use BensonDevs\SuperchargedEnums\Common\Finance\MoneyRoundingMode;
use BensonDevs\SuperchargedEnums\Common\Measure\LengthUnit;
use BensonDevs\SuperchargedEnums\Common\Time\DurationUnit;
LengthUnit::Mile->toKilometers(1);
DurationUnit::Hour->toSeconds(2);
MoneyRoundingMode::HalfEven->roundMoney(10.005);
bash
composer boost:install # select skills; enable bensondevs/supercharged-enums
# or, for an existing Boost setup:
php artisan boost:update --discover