Easily work with enums.
β¨ Help support the maintenance of this package by sponsoring me.
Designed to work with Laravel, Filament, and more.
composer require sakanjo/laravel-easy-enum
<?php
namespace App\Enums;
use SaKanjo\EasyEnum;
enum ExampleEnum: int
{
use EasyEnum;
case Active = 0;
case NOPE = 1;
}
// lang/en/enums.php
<?php
use App\Enums;
return [
Enums\ExampleEnum::class => [
Enums\ExampleEnum::NOPE->name => 'Nope',
// ...
],
// ...
];
That's it!
Returns the label of the enum value.
Status::Active->getLabel(); // Active
Checks if the enum is equal to another one.
$enum1->is($enum2); // boolean
inverse of is
.
$enum1->isNot($enum2); // boolean
Checks if the enum is in a list of enums.
$enum->in([$enum1, $enum2]); // boolean
inverse of in
.
$enum->notIn([$enum1, $enum2]); // boolean
Safely converts a string to its corresponding enum value (returns null if not found).
Status::tryFromName('Active'); // Status::Active
Status::tryFromName('Oops'); // null
Converts a string to its corresponding enum value (throws exception if not found).
Status::fromName('Active'); // Status::Active
Status::fromName('Oops'); // Throws ValueError exception
Returns a list of case names.
Status::names(); // ['Active', 'NOPE']
Returns a list of case values .
Status::values(); // [0, 1]
Returns an associative array of case names and values.
Status::options(); // ['Active' => 0, 'NOPE' => 1]
Status::options(true); // ['Active' => 0, 'Nope' => 1]
alias for getLabel
, useful in blade.
Status::Active->toHtml(); // Active
same as toHtml
except it doesn't render HTML.
Status::Active->resolveDisplayableValue(); // Active
<?php
namespace App\Enums;
use Filament\Support\Contracts\HasLabel;
use SaKanjo\EasyEnum;
enum Status: int implements HasLabel
{
use EasyEnum;
case Active = 0;
case Disabled = 1;
}
<?php
use Filament\Forms;
use App\Enums;
Forms\Components\Select::make('status')
->options(Enums\Status::class);
<?php
namespace App\Enums;
use Illuminate\Contracts\Support\DeferringDisplayableValue;
use Illuminate\Contracts\Support\Htmlable;
use SaKanjo\EasyEnum;
enum Status: int implements Htmlable // or DeferringDisplayableValue
{
use EasyEnum;
case Active = 0;
case Disabled = 1;
}
<div>
Current status: {{ auth()->user()->status }}
</div>
Do you like this project? Support it by donating
Click the "π Sponsor" at the top of this repo.
MIT License Β© 2023-PRESENT Salah Kanjo