A collection* of enum helpers for PHP.
* Currently there's only one helper — InvokableCases — but the goal of the package is to provide general purpose enum helpers.
You can read more about the idea on Twitter. I originally wanted to include that helper in archtechx/helpers, but it makes more sense to make it a separate dependency and use it inside the other package.
Laravel 8 or 9 are required. PHP 8.1+ is required.
composer require archtechx/enumsThis helper lets you get the value of a backed enum by "invoking" it — either statically (MyEnum::FOO() instead of MyEnum::FOO), or as an instance ($enum()).
That way, you can use enums as array keys:
'statuses' => [
TaskStatus::INCOMPLETE() => ['some configuration'],
TaskStatus::COMPLETED() => ['some configuration'],
],Or access the underlying primitives for any other use cases:
public function updateStatus(int $status): void;
$task->updateStatus(TaskStatus::COMPLETED());The main point: this is all without having to append ->value to everything.
This approach also has decent IDE support. You get autosuggestions while typing, and then you just append ():
MyEnum::FOO; // => MyEnum instance
MyEnum::FOO(); // => 1use ArchTech\Enums\InvokableCases;
enum TaskStatus: int
{
use InvokableCases;
case INCOMPLETE = 0;
case COMPLETED = 1;
case CANCELED = 2;
}TaskStatus::INCOMPLETE(); // 0
TaskStatus::COMPLETED(); // 1
TaskStatus::CANCELED(); // 2public function updateStatus(TaskStatus $status)
{
$this->record->setStatus($status());
}Run all checks locally:
./checkCode style will be automatically fixed by php-cs-fixer.