InvokableCases
Get the value of a backed enum, or the name of a pure enum, by invoking it statically (MyEnum::FOO()) or as an instance ($enum()).
Benefits
Section titled “Benefits”Eliminates the need to append ->value when working with backed enums:
// Without InvokableCases'statuses' => [ TaskStatus::Incomplete->value => ['some configuration'], TaskStatus::Completed->value => ['some configuration'],];
// With InvokableCases'statuses' => [ TaskStatus::Incomplete() => ['some configuration'], TaskStatus::Completed() => ['some configuration'],];use Cline\Enums\Concerns\InvokableCases;
enum TaskStatus: int{ use InvokableCases;
case Incomplete = 0; case Completed = 1; case Canceled = 2;}
enum Role{ use InvokableCases;
case Administrator; case Subscriber; case Guest;}Static Invocation
Section titled “Static Invocation”Get the primitive value by invoking cases statically:
// Backed enum returns the valueTaskStatus::Incomplete(); // 0TaskStatus::Completed(); // 1TaskStatus::Canceled(); // 2
// Pure enum returns the nameRole::Administrator(); // 'Administrator'Role::Subscriber(); // 'Subscriber'Role::Guest(); // 'Guest'Instance Invocation
Section titled “Instance Invocation”Invoke enum instances to get their primitive value:
public function updateStatus(TaskStatus $status, Role $role){ // Invoke the instances to get their values $this->record->setStatus($status(), $role());}Use Cases
Section titled “Use Cases”Array Keys
Section titled “Array Keys”Configure mappings and associative arrays:
$config = [ TaskStatus::Incomplete() => ['color' => 'yellow', 'icon' => 'clock'], TaskStatus::Completed() => ['color' => 'green', 'icon' => 'check'], TaskStatus::Canceled() => ['color' => 'red', 'icon' => 'x'],];Method Parameters
Section titled “Method Parameters”Pass primitive values to methods expecting them:
public function updateStatus(int $status): void;
// Clean invocation without ->value$task->updateStatus(TaskStatus::Completed());Database Queries
Section titled “Database Queries”Use in database queries without appending ->value:
$tasks = Task::where('status', TaskStatus::Incomplete())->get();IDE Support
Section titled “IDE Support”InvokableCases provides full IDE autocompletion. Add parentheses to convert suggestions to primitive values:
MyEnum::FOO; // MyEnum instance (IDE autocompletes)MyEnum::FOO(); // Primitive value (add parentheses)