Lean DTOs &amp; Value Objects in Laravel (PHP 8.3) | Mohamed Said        [  ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MH.png)   Mohamed Said Laravel Backend Engineer  ](https://www.msaied.com) [ Home ](https://www.msaied.com) [ Projects ](https://www.msaied.com/projects) [ Articles  ](https://www.msaied.com/articles) [ Certificates ](https://www.msaied.com/certificates) [ Contact ](https://www.msaied.com#contact-section) 

       [  ](https://github.com/EG-Mohamed)       

 [ Home ](https://www.msaied.com) [ Projects ](https://www.msaied.com/projects) [ Articles ](https://www.msaied.com/articles) [ Certificates ](https://www.msaied.com/certificates) [ Contact ](https://www.msaied.com#contact-section) 

  [ home ](https://www.msaied.com)    [ articles ](https://www.msaied.com/articles)    Contextual DTOs and Value Objects in Laravel Without the Bloat        On this page       1. [  The Problem With Bloated DDD Toolkits ](#the-problem-with-bloated-ddd-toolkits)
2. [  DTOs: Readonly Classes as Input Contracts ](#dtos-readonly-classes-as-input-contracts)
3. [  Value Objects: Encapsulate Rules, Not Just Data ](#value-objects-encapsulate-rules-not-just-data)
4. [  Casting Value Objects Into Eloquent ](#casting-value-objects-into-eloquent)
5. [  Keeping Actions Thin ](#keeping-actions-thin)
6. [  Key Takeaways ](#key-takeaways)

  ![Contextual DTOs and Value Objects in Laravel Without the Bloat](https://cdn.msaied.com/549/9eafcdbde2cf4401308fb8644ae9a3ab.png)

  #laravel   #ddd   #php8.3   #clean-architecture   #eloquent  

 Contextual DTOs and Value Objects in Laravel Without the Bloat 
================================================================

     14 Aug 2026      1 min read    ![Mohamed Said](https://cdn.msaied.com/01KT78WE565VEMM3PSNQAAB0MJ.jpg)  Mohamed Said  

       Table of contents

1. [  01   The Problem With Bloated DDD Toolkits  ](#the-problem-with-bloated-ddd-toolkits)
2. [  02   DTOs: Readonly Classes as Input Contracts  ](#dtos-readonly-classes-as-input-contracts)
3. [  03   Value Objects: Encapsulate Rules, Not Just Data  ](#value-objects-encapsulate-rules-not-just-data)
4. [  04   Casting Value Objects Into Eloquent  ](#casting-value-objects-into-eloquent)
5. [  05   Keeping Actions Thin  ](#keeping-actions-thin)
6. [  06   Key Takeaways  ](#key-takeaways)

 The Problem With Bloated DDD Toolkits
-------------------------------------

Most DDD tutorials for Laravel end with you installing a 40-class package that wraps every primitive in an abstract hierarchy. The result is more ceremony than clarity. PHP 8.3 readonly classes, combined with a few focused conventions, give you everything you actually need.

---

DTOs: Readonly Classes as Input Contracts
-----------------------------------------

A DTO's only job is to carry validated, typed data across a boundary — from a controller into an action, or from a queue payload into a handler. PHP 8.3 readonly classes are a perfect fit.

```php
