Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Enums For Laravel Laravel Package

roundly-consulting/enums-for-laravel

Enums for Laravel brings first-class PHP enum support to Laravel applications. Cast enum attributes in Eloquent models, validate enum input, and work with backed values across requests and APIs. It keeps code type-safe, readable, and easy to integrate without extra boilerplate.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Domain modeling conventions: Whether to represent finite states (order status, subscription tier, payment state, user role) as native PHP 8.1 enums rather than string constants or lookup tables—and how those enums surface in Eloquent models, requests, and API payloads.
  • Build vs. buy vs. fork: Deciding between hand-rolling internal enum casts/validation traits, adopting this thin MIT-licensed helper, or vendoring/forking it. The package is small enough that "buy" is effectively "adopt and own," which changes the risk calculus.
  • API contract consistency: Standardizing enum serialization (backed values, labels, descriptions) across JSON resources so mobile/web clients see stable, documented values instead of ad-hoc strings.
  • Localization roadmap: Whether customer-facing labels for enum values (e.g., status names in multiple locales) are handled centrally via enum labels or scattered through translations/views—affects i18n scope and QA.
  • Feature velocity for CRUD/form-heavy work: Reducing per-field boilerplate for casts and validation rules, which directly shortens delivery time on admin panels, onboarding flows, and settings screens.
  • Artisan generator standards: Whether to enforce a scaffolding convention (make:enum) so new enums are consistent, reviewable, and discoverable—an engineering-standards decision with onboarding implications.

When to Consider This Package

Adopt when:

  • The stack is Laravel on PHP 8.1+ and the team already leans on native enums.
  • There are multiple enum-backed attributes across models and form requests, and the team is repeating cast/validation/label code.
  • You need validation rules and localized labels alongside casting—this package bundles those concerns rather than solving only one.
  • You want a low-ceremony, MIT-licensed helper you can read in an afternoon and vendor if necessary.
  • API responses must expose human-readable enum labels consistently.

Look elsewhere or defer when:

  • The team already has an internal enum trait/cast that covers the same ground—duplication creates two conventions.
  • You need enterprise support, SLA, security review artifacts, or a large contributor base. At 5 stars and 0 known dependents, this is an early-stage package with limited community validation; treat it as "evaluate and pin," not "assume maintained."
  • Requirements exceed presentation/validation—e.g., complex state machines with transition guards and auditing. Use a dedicated state-machine package and keep enums as the value type.
  • You need database-level enum constraints, migration tooling, or query-builder integration beyond Eloquent casting.
  • Performance at extreme scale is a hard requirement without benchmarking, or the org restricts dependencies to a pre-approved allowlist.

Mitigation if adopted: pin an exact version, run a short spike against real models/requests, wrap usage behind a thin internal abstraction where feasible, and assign an owner to watch releases and upstream activity.

How to Pitch It (Stakeholders)

To executives: This is a small, free (MIT) helper that makes Laravel's native enum feature easier to use consistently. It reduces repetitive code in models, forms, and API responses, which shortens delivery time on form- and status-heavy features and lowers the chance of invalid values reaching the database or clients. Cost is near zero; the main consideration is that it's an early-stage package, so we'd pin the version, wrap it lightly, and own it internally. Recommendation: approve a short evaluation spike, not a broad mandate.

To engineering: It's a thin convenience layer, not a framework: Eloquent casts, validation rules, serialization helpers, localized labels, and an Artisan generator for enums. If we already have an internal trait doing this, compare before adopting—otherwise it removes boilerplate and gives us one convention. Read the source (it's small), pin the version, and avoid leaking the package's API deep into domain code so we can swap or vendor it later. Keep state-machine logic out of it; enums stay as value types.

To product/design: Enum labels and descriptions can be localized centrally, so customer-facing status text becomes a translation concern rather than a per-screen string. That means faster iteration on copy and fewer inconsistencies between web and API.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource