elao/enum
Opinionated extensions for PHP 8.1+ native enums with readable labels, flag/bitmask enums, and extra values. Includes integrations for Symfony (Forms, HTTP Kernel arg resolver, Translation, VarDumper), Doctrine ORM/ODM, and Faker.
ReadableEnum and DatabaseEnum traits align well with Laravel’s domain-driven design (DDD) patterns, particularly for:
UserRole, OrderStatus).DatabaseEnum trait simplifies Eloquent model integration (e.g., enum('status') columns).ReadableEnum enables consistent JSON/API responses (e.g., {"status": "PENDING"} instead of {"status": 1}).prefix, description, icon) are highly aligned with Laravel’s needs for:
Suit::Hearts->label() → "Hearts").DatabaseEnum trait assumes raw enum storage (e.g., ENUM('value') in MySQL). Laravel’s Eloquent does not natively support PHP enums in databases (as of v10), requiring:
string columns with validation.useAsString()).| Risk Area | Severity | Mitigation Strategy |
|---|---|---|
| Database Schema Changes | High | Test DatabaseEnum with Laravel’s migrations. Use useAsString() for compatibility. |
| PHP 8.4 Dependency | Medium | Block upgrade if PHP 8.4 isn’t feasible. Use native enums as fallback. |
| Symfony Integration | Low | Laravel’s Symfony components (e.g., Forms) will work; test edge cases. |
| Performance Overhead | Low | Benchmark serialization/deserialization vs. native enums. |
| Ecosystem Lock-in | Medium | Package is MIT-licensed; vendor it if concerns arise. |
ENUM columns (MySQL) or string columns with validation?DatabaseEnum + Eloquent interactions?spatie/laravel-enum (Laravel-specific) suffice, or do we need Symfony integrations?DatabaseEnum trait for enum-like columns (requires custom accessors).Rule::in() or custom rules.ReadableEnum ensures consistent JSON responses (e.g., {"status": "ACTIVE"}).->label() or ->value for human-readable output.->value).const-based enums or string magic values.UserRole, PaymentStatus).elao/enum in a feature branch.string columns with validation (if not using ENUM).const enums with elao/enum classes.elao/enum features aren’t critical.| Component | Compatibility Notes |
|---|---|
| PHP 8.4+ | Required for full feature set. |
| Laravel 10+ | Works seamlessly; Symfony components are compatible. |
| MySQL | ENUM columns work with DatabaseEnum; otherwise, use string with validation. |
| PostgreSQL | No native ENUM support; use string with check constraints. |
| SQLite | No ENUM type; use string with validation. |
| API Platforms | ReadableEnum ensures consistent JSON output. |
| Testing | Works with Pest/PHPUnit; no framework-specific quirks. |
OrderStatus, UserRole).const enums; add migration scripts for database changes.prefix, icon) may require package updates.const enums or string values may need cleanup.ENUM vs. string).php artisan tinker to inspect enum values/labels.How can I help you explore Laravel packages today?