Supercharge Your PHP Enums with archtechx/enums
July 1, 2025Supercharge Your PHP Enums with archtechx/enums
PHP 8.1 introduced native enums—type‑safe sets of named values like statuses or roles. The archtechx/enums package adds traits that reduce boilerplate and enhance DX (Developer Experience).
✨ Key Features
- InvokableCases: Call enum cases directly to get value or name, no more
->value. - Names: Get an array of case names.
- Values: Fetch values (backed enums) or names (pure enums).
- Options: Associative array of case => value.
- From: Adds
from(),tryFrom(),fromName(),tryFromName(). - Metadata: Associate attributes like description/color per case.
- Comparable: Compare enums with
is(),isNot(),in(),notIn().
📦 Installation
Requires PHP 8.1+. Install via Composer:
composer require archtechx/enums
🧩 Examples
1. InvokableCases
use ArchTech\Enums\InvokableCases;
enum TaskStatus: int {
use InvokableCases;
case INCOMPLETE = 0;
case COMPLETED = 1;
case CANCELED = 2;
}
TaskStatus::COMPLETED(); // ⇒ 1
2. Names & Values
use ArchTech\Enums\Names;
use ArchTech\Enums\Values;
enum Role {
use Names, Values;
case ADMIN, USER, GUEST;
}
Role::names(); // ⇒ ['ADMIN', 'USER', 'GUEST']
Role::values(); // ⇒ ['ADMIN', 'USER', 'GUEST']
3. Options & stringOptions()
use ArchTech\Enums\Options;
enum TaskStatus: int {
use Options;
case INCOMPLETE = 0;
case COMPLETED = 1;
}
TaskStatus::options();
// ⇒ ['INCOMPLETE' => 0, 'COMPLETED' => 1]
TaskStatus::stringOptions();
// ⇒ "Incomplete…"
4. From / tryFrom / fromName / tryFromName
use ArchTech\Enums\From;
enum Role: string {
use From;
case ADMIN = 'admin';
case USER = 'user';
}
Role::from('admin'); // ⇒ Role::ADMIN
Role::tryFrom('unknown'); // ⇒ null
Role::fromName('USER'); // ⇒ Role::USER
5. Metadata
use ArchTech\Enums\Metadata;
use ArchTech\Enums\Meta\Meta;
use App\Enums\Meta\{Description, Color};
#[Meta(Description::class, Color::class)]
enum TaskStatus: int {
use Metadata;
#[Description('Incomplete')] #[Color('red')]
case INCOMPLETE = 0;
}
TaskStatus::INCOMPLETE->description(); // ⇒ 'Incomplete'
6. Comparable
use ArchTech\Enums\Comparable;
enum TaskStatus: int {
use Comparable;
case INCOMPLETE = 0;
case COMPLETED = 1;
}
TaskStatus::INCOMPLETE->is(TaskStatus::INCOMPLETE); // ⇒ true
✅ Best Practices
- Use
InvokableCasesinstead of->valuefor readability and IDE support. - Populate form selects with
options(). - Use
tryFrom()for safe input handling. - Group enums in an
app/Enumsdirectory in Laravel projects.
This package makes PHP enums way more powerful and developer-friendly—perfect for Laravel, APIs, forms, and metadata‑rich logic.
Blog
Jul 01, 2025
Essential React Native UI & Interaction Components React Native provides a powerful set of built-in components for creating native mobile apps....
May 23, 2026
The Journey of a Request Inside Laravel: The Core Concept and Complete Lifecycle A deep dive into how Laravel processes requests from start to...
Jul 24, 2025
🧠 What is Dynamic Import? Dynamic import allows you to load JavaScript modules at runtime—only when needed. This approach is fantastic for r...
Jul 01, 2025
Supercharge Your PHP Enums with archtechx/enums PHP 8.1 introduced native enums—type‑safe sets of named values like statuses or roles. The arch...
Jul 06, 2025
Using Web Components the Smart Way A lot of developers assume Web Components are meant to replace full SPA frameworks like React or Vue. But in rea...
Jan 27, 2026
Introduction React Native is one of the most widely used frameworks for cross-platform mobile application development. However, iOS build time ha...