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
InvokableCases
instead of->value
for readability and IDE support. - Populate form selects with
options()
. - Use
tryFrom()
for safe input handling. - Group enums in an
app/Enums
directory in Laravel projects.
This package makes PHP enums way more powerful and developer-friendly—perfect for Laravel, APIs, forms, and metadata‑rich logic.
Blog
React Native 0.80 & ExecuTorch: A Powerful Leap into Offline AI for Mobile Apps
Jul 28, 2025
🚀 What’s New in React Native 0.80? The React Native 0.80 release marks a pivotal moment in mobile development. This update not only enhances...
Explore the Most Powerful Modern Laravel Tools: Inertia.js, View Creators, and HLS — Step by Step
Jul 27, 2025
Here’s a complete breakdown of essential tools to level up your Laravel development: Inertia.js v2, View Creators, and the Laravel HLS package...
React History – A Professional Developer’s Perspective
Jul 26, 2025
1. Origins: Born Inside Facebook In 2011, Facebook engineers faced the increasing complexity of building interactive UIs at scale. They developed...
The Difference Between Redux, Context & React Components in State Management
Aug 06, 2025
When building applications with React, there’s always a need to manage data that changes based on user interaction or from fetching external r...
React Labs: View Transitions & Activity
Jun 17, 2025
React Labs: View Transitions & Activity Published April 23, 2025 by Ricky Hanlon. React Labs is sharing two new experimental featu...
Laravel 12.16.0 - New Features for Developers
Jun 03, 2025
Laravel 12.16.0 - New Features for Developers 1. New Validation Rule: in_array_keys You can now validate that an array contains at least one of the...
