Andrew Cassell 1-Day Workshop
Tue, Sept 11

Building PHP applications using Domain-driven design techniques results in code that is easier to modify, maintain, test, and makes for a better user experience. In this full day of hands-on learning you will become versed in the best practices for solving problems in PHP from start to finish.

You Will Learn To:

  • Discover a ubiquitous language and identify changes in the design of PHP classes, methods, and problem solving
  • Assemble an incorruptible domain model in PHP by encapsulating business logic in immutable value objects, specifications, and entities
  • Employ best practices for persisting and accessing entities and aggregate roots in Doctrine and Eloquent
  • Construct DDD patterns and compare how Symfony, Laravel, and Zend Framework influence the design of DDD components
  • Use advanced PHP object-oriented techniques to simplify code and reduce state complexity
  • Organize and build your DDD project so you are working with frameworks and not against them
  • Plan for change by using the Hexagonal Architecture Pattern
  • Separate models into bounded contexts using namespaces and message passing between contexts
  • Apply domain event publishing and subscribing synchronously and asynchronously
  • Write your own DIY event sourcing and use libraries like EventSauce and Prooph
  • Evaluate CQRS techniques using a command bus, read models, and thin controllers
  • Devise a comprehensive test plan for a DDD PHP application
  • Compare techniques for eliminating repetitive tasks in DDD PHP applications
  • Introduce DDD to a “legacy” codebase
  • Discover recommended resources for learning more about applying DDD in PHP

The target audience for this workshop is PHP software developers and architects developing web applications regardless of framework.


PHP7 Docker images and example repository will be provided. Minimal front-end work so no specific PHP framework knowledge is required. Workshop will cover topics in Symfony, Laravel, Zend Framework, Doctrine, and Eloquent.