Strengths:
UserRole::ADMIN vs. UserRole::Admin), improving developer experience.Weaknesses:
where('status', UserStatus::ACTIVE)).@enum directives).assertSameEnum()), but lacks Laravel-specific test helpers (e.g., assertDatabaseHas() with enums).Spatie\Enum\Laravel\HasEnums traits).INT/STRING mapping)? If so, this package may not suffice.Enumhancer::fromString() vs. native UserStatus::from())?TestCase helpers be used?Spatie\Enum\Enum with Enumhancer\Enum in FormRequest or Validator rules.JsonResource for consistent serialization (e.g., public function toArray(): array { return ['status' => $this->resource->status->value]; }).UserStatus::ADMIN in CreateUserDto).status VARCHAR(255)) with manual validation.getStatusAttribute()).laravel-enum for column casting (if needed).@enum('UserStatus::ADMIN')) or use PHP directly in views.Spatie\Enum\Enum with Enumhancer\Enum.// Before (Spatie)
use Spatie\Enum\Laravel\Enum;
class UserRole extends Enum {
public static $values = ['ADMIN', 'USER'];
}
// After (Enumhancer)
enum UserRole {
case ADMIN;
case USER;
}
trait UsesEnums {
protected function serializeEnum($value) { /* ... */ }
protected function deserializeEnum($value, $enumClass) { /* ... */ }
}
Blade::directive('enum', function ($expression) {
return "<?php echo {$expression}->value; ?>";
});
assertSameEnum() or custom assertions.composer require henzeb/enumhancer installation.from() methods).HasEnums trait) require manual replacement.strtolower() in queries).->value explicitly).var_dump($enum->value) or Enumhancer::getAll() for inspection.VARCHAR) scale similarly to existing solutions.ValueError for invalid cases; ensure validation layers (e.gHow can I help you explore Laravel packages today?