【问题标题】:DDD bounded contexts and modules vs Symfony2 bundlesDDD 有界上下文和模块与 Symfony2 捆绑包
【发布时间】:2014-07-07 08:10:29
【问题描述】:
我正在尝试从域驱动设计中实现几个概念,例如限界上下文和模块。
我正在开发一个 Symfony2 项目,我想使用 DDD 方法来处理它。 Symfony2 有包,每个包都有几个文件夹,用于服务、实体、控制器、视图等。
我希望我的应用程序具有这样的分层方法:
这是一个带有层的单一有界上下文。
如何将有界上下文、层及其模块映射到 Symfony2 中的包?
注意:我知道 DDD 不仅仅是一个文件夹结构,但我想在这里解决这个特定问题。
【问题讨论】:
标签:
php
oop
symfony
architecture
domain-driven-design
【解决方案1】:
您可以(并且必须)编写不可知论的域层框架,以便您遵循 DDD 最佳实践并按照您喜欢的结构设置文件夹。一个好的框架不会用它自己的文件夹结构来限制你。
您可以将捆绑包视为您的域与 Symfony 的集成层。
使用捆绑包基本上只需添加:
- 你的领域层的依赖注入
- 添加持久层(Doctrine)
- 添加 HTTP 层
- 配置
- ...
我有一个这样的基本文件夹结构:
- 源
- 域(与域相关的所有内容)
- DomainBundle(将域集成到 Symfony - DI、配置、具体存储库类、实体映射...)
- WebBundle(控制器、表单、模板)
因此,您不会将域逻辑放入包中。您只需使用它们在您的域周围添加框架逻辑。