PHP 8.3 Enums in Laravel: Casts, Routes &amp; Validation | Mohamed Said       [Skip to content](#main)  [ ![](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png) Mohamed SaidLaravel Backend Engineer ](https://www.msaied.com/public) - [Home](https://www.msaied.com/public)
- [Projects](https://www.msaied.com/public/projects)
- [Articles](https://www.msaied.com/public/articles)
- [Certificates](https://www.msaied.com/public/certificates)
- [About](https://www.msaied.com/public#about)

           [  Contact](https://www.msaied.com/public#contact) Menu 

Menu
----

Close 

 - [HomeStart here](https://www.msaied.com/public)
- [ProjectsCase studies](https://www.msaied.com/public/projects)
- [ArticlesEngineering notes](https://www.msaied.com/public/articles)
- [CertificatesCredentials](https://www.msaied.com/public/certificates)
- [AboutHow I work](https://www.msaied.com/public#about)
- [ContactGet in touch](https://www.msaied.com/public#contact)

  [Start a conversation](https://www.msaied.com/public#contact) [WhatsApp](https://wa.me/201094619204) [Email](mailto:hello@msaied.com) 

 1. [Home](https://www.msaied.com/public)
2. /
3. [Articles](https://www.msaied.com/public/articles)
4. /
5. Typed PHP 8.3 Enums as Eloquent Casts, Route Parameters, and Validation Rules

 Typed PHP 8.3 Enums as Eloquent Casts, Route Parameters, and Validation Rules
==============================================================================

 Go beyond basic enum casting. Learn how to wire PHP 8.3 backed enums into Eloquent, route model binding, and custom validation rules to eliminate stringly-typed code across your Laravel application.

 ![](https://cdn.msaied.com/01M22N44A70A5MC2S599JP0MPH.webp) [Mohamed Said](https://www.msaied.com/public#person) Published 23 Aug 2026 · Updated 23 Aug 2026 · 1 min read

ShareCopy linkCopied

 ![Typed PHP 8.3 Enums as Eloquent Casts, Route Parameters, and Validation Rules](https://cdn.msaied.com/583/7301900aac0f2ec5d1347df11ce92188.png) 

  On this page +1. [Why Enums Deserve More Than a Simple Cast](#why-enums-deserve-more-than-a-simple-cast)
2. [Defining a Rich Backed Enum](#defining-a-rich-backed-enum)
3. [Eloquent: Beyond the Basic Cast](#eloquent-beyond-the-basic-cast)
4. [Route Model Binding with Enums](#route-model-binding-with-enums)
5. [A Reusable EnumRule Validation Rule](#a-reusable-codeenumrulecode-validation-rule)
6. [Serialising Enums in API Resources](#serialising-enums-in-api-resources)
7. [PHP 8.3 Specifics Worth Knowing](#php-83-specifics-worth-knowing)
8. [Key Takeaways](#key-takeaways)

 Why Enums Deserve More Than a Simple Cast
-----------------------------------------

Most teams stop at `protected $casts = ['status' => StatusEnum::class]` and call it done. That covers the happy path, but enums can do far more: they can own their own labels, drive route model binding, and back custom validation rules — all without a single string literal leaking into your domain logic.

### Defining a Rich Backed Enum

```php
