Web Application Workshop
In this training you’ll learn the design patterns needed to decouple your domain logic from surrounding infrastructure. This will help you keep your applications testable and maintainable in the long run.
Content & Process
Starting out with a traditionally structured web application we recognize that it’s tied to a particular web framework and database vendor, and that it’s hard to test domain logic in isolation. This is true not only for the sandbox application but for many real-world applications as well. It’s a danger for the long-term maintainability of such an application, and it will eventually slow down the development of the project to the point where the team begs for a complete rewrite.
That’s not the direction we choose in this training. Instead of a big rewrite, we refactor the existing code in small steps over multiple iterations, until we have a decoupled core surrounded by a layer of infrastructure code. We then separate the classes into three layers and distinguish Ports and Adapters (from Hexagonal Architecture).
Part 1: Decoupling code by extraction using the Application service, Command, Entity, and Repository pattern.
Part 2: Reorganizing the application into layers: Domain, Application, and Infrastructure.
Audience & Requirements
This training is for developers who have at least a couple of years of experience working on PHP web applications, with a framework like Symfony or Laravel. Before the training starts you should have the following project installed on your machine: https://github.com/matthiasnoback/layers-ports-and-adapters-workshop