Presented at php[tek] 2016
Once you try domain-driven design (DDD), you will never design software in the same way again. We will avoid silly buzzwords and break DDD down into easy-to-understand components. We will start by discussing what it means to use a ubiquitous language, encapsulate logic in value objects, and use bounded contexts, entities, and aggregate roots to manage state and protect invariants. We will also cover more-advanced topics in the DDD world, such as event sourcing and command query responsibility segregation.