PHP Roundtable about DDD
Loose notes and bookmarks to fragments of PHP Roundtable panel on DDD with Mathias Verraes, Ross Tuck and Chris Fidao. Whole thing is about 2 hours long, so I decided to make some bookmarks in case I wanted to go back to it or reference it somebody. Unfortunatly I could not find the shownotes or transcript for this episode.
Whole thing can be found under this URL.
Essence of DDD, answered by M. Verraes
how to explain domain to a MVC user: 7m26s
distinction between strategic (understanding the domain) and tactical DDD (implementation, e.g. events) [R. Tuck, M. Verraes]: 10m8s
The code that makes money should be the cleanest and the best possible quality.
DDD is not a design pattern. It is a way of thinking about business and transferring that knowledge to code that models the business in a way understandable by a domain expert.
Strengths and weaknesses of DDD [M. Verraes]: 16m10s
Aggregate
Is an entity that has been designated to be streamline communication through for a group of VO or entities.
Can be used to define a boundary for transactions.
Aggregate is not strictly part of a domain, because business does not “know” about them. [M. Verraes].
It is a tactical pattern. [R. Tuck].
Domain events
Something that happens that the business would be interested in: 46m59s
Factories
“Objects for pooping out new objects”: 59m5s It is just about the standard OOP factories.
Repositories
Objects for getting objects from persistence layer: 1h2m0s
Hexagonal architecture
Introduction, not too informative and a bit chaotic: 1h3m30s
Difference between DDD and hexagonal architecture: 1h7m50s
a slightly more cohesive explanation: 1h8m29s
Examples of hexagonal architecture and DDD going hand in hand: 1h9m17s
M. Verraes on the meaning of hexagons :) : 1h12m45s
Post panel discussion
2 words about Broadway Framework: 1h16m38s
Web frameworks versus general design principles: 1h20m34s
[M. Verraes] Common, simple problem for people transitioning from MVC- to DDD-thinking: structuring directory structure in a way that separates classes by function and not by domain.
[R. Tuck] on splitting application into layers: 1h36m40s
DDD and REST APIs 1h38m51s
Switching from CRUD thinking to DDD thinking: 1h44m00s
Frequent issues with DDD: 1h48m47s
How to make first step towards building apps in a DDD way: 1h45m29s
I have omitted a lot the fragments, some on purpose, some by mistake. I really wish they they would edit those things to some more managable and focused format. Still there is a lot interesting stuff in there, so enjoy.