In order to be able to build complex applications, one of the key requirements is having an architectural design that fits the application's needs. One advantage of Domain-Driven Design is that it's not tied to any particular architecture style. Instead, we're free to choose the architecture that best fits the needs of every Bounded Context inside the Core Domain, which offers a diverse set of architectural choices for every specific Domain problem.
For example, an Order Processing System can use Event Sourcing to track all the different order operations; a Product Catalog can use CQRS to expose the product details to the different clients; and a Content Management System can use plain Hexagonal Architecture to expose requirements such as blogs, static pages, and so on.
This chapter presents an introduction to every relevant architecture style in the land of PHP, following the...