Domain-Driven Design mit Symfony
Ein umfassender Leitfaden für Domain-Driven Design in Symfony
Erfahre, wie du DDD-Prinzipien in deinen Symfony-Anwendungen umsetzen kannst.
Vorwort
Wem hilft dieses Tutorial?
- Symfony-Entwickler:innen, die ihre Projekte besser strukturieren wollen
- Teams, die gemeinsam an klaren Modellen arbeiten möchten
- Menschen, die DDD kennen – aber wissen wollen, wie man’s konkret umsetzt
Was solltest du mitbringen?
- Kenntnisse in Symfony (Controller, Services, Routing)
- Ein bisschen Neugier auf neue Architekturideen
- Grundkenntnisse in Domain-Driven Design
Überblick
Domain-Driven Design (DDD) ist ein Ansatz zur Softwareentwicklung, der sich auf die Kerndomäne und die Domänenlogik konzentriert. DDD betont die Zusammenarbeit zwischen technischen und domänenspezifischen Experten, um ein gemeinsames Verständnis des Problembereichs zu entwickeln und dieses in Software umzusetzen.
Dies ist kein Tutorial, das dir die Konzepte des DDD beibringen möchte - dazu fehlt mir schlicht die Zeit und das würde den Rahmen sprengen. Es geht hier primär darum, wie DDD in einem Symfony-Projekt umgesetzt werden kann.
Inhalt
📄️ Ordnerstruktur für DDD in Symfony
Eine klare und effektive Organisation deiner Symfony-Anwendung nach DDD-Prinzipien
📄️ Domain-Schicht
Herzstück - alle Geschäftsregeln, Modelle, reines PHP
📄️ Anwendungs-Schicht
Koordinator - orchestriert Abläufe, kennt Domain und Services
📄️ UI-Schicht
Eingangsschicht - regelt alle Eingänge
📄️ Infrastruktur-Schicht
Technische Details - z.B. Datenbank, Mail, Filesystem, Framework-Anbindung
📄️ Shared-Komponenten
Technische Details - z.B. Datenbank, Mail, Filesystem, Framework-Anbindung
📄️ Nächste Schritte
Was kommt als nächstes?
Hauptkonzepte des DDD ganz kurz erklärt
Ubiquitous Language
Eine gemeinsame Sprache zwischen Entwicklern und Domänenexperten, die in allen Aspekten des Projekts verwendet wird.
Bounded Contexts
Klare Grenzen zwischen verschiedenen Teilen des Systems, in denen Begriffe eine spezifische Bedeutung haben.
Entities & Value Objects
Objekte mit Identität (Entities) und ohne Identität (Value Objects), die die Domäne modellieren.
Aggregates
Cluster von Entities und Value Objects mit klaren Grenzen und einer Root-Entity.
Repositories
Abstraktion für den Zugriff auf Domänenobjekte, die die Persistenz von der Domäne trennt.
Domain Services
Operationen, die nicht natürlich zu einer Entity oder einem Value Object gehören.