As developers, we often have a problematic relationship with primitives. We use a string for an email, a float for a price, and an int for a status. This is what we call Primitive Obsession—and it’s one of the common reasons why PHP codebases gradually become hard to maintain. If you’ve been following my series on Refactoring & Patterns, you know I’m a fan of the Introduce Parameter Object pattern. But today, I want to go deeper and talk about one of the smallest, yet most powerful building blocks of clean architecture: ** Value Objects**. Previous article in this category: https://codecraftdiary.com/2026/04/11/fat-controller-laravel-refactor/ The “Price” of Primitive Obsession Imagine you’re working on an e-commerce platform. You have a Product and a Discount.…