DDD in PHP

Andrew Cassell 1-Day Workshop
Tue, Sept 11
GET YOUR TICKET

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.

Prerequisites:

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.