在MVC框架中实现DDD – PHP
在mvc中,模型是一个层,它包含所有的域业务逻辑.
在域驱动设计中,业务逻辑可以分为各种构建块. 在域驱动设计域模型中.
开发人员已经阅读了域驱动设计,或正在使用Doctrine2或Hibernate, 这样的实现如下所示.模型文件夹是如何结构的 Model(this can model or domain) | |----Entities | |---BlogPost.php | |---Comment.php | |---User.php | |----Repositories | |---BlogPostRepository.php | |---CommentRepository.php | |---UserRepository.php | |----Services | |---UserService.php | |----factories | |---userfactory.php | |----dataMappers | |---userDataMapper.php // this inherit from Eloquent model | |----ValueObject >我想知道是我的第一个假设(可以在mvc框架中的模型文件夹中实现域模型)是正确的吗? >是正确的设计,DDD中的所有构建块在模型文件夹(如上所示)中实现,如实体,服务,存储库 >或有关此实施的任何其他建议. >如果这是错误的,在mvc框架中实现DDD的构建块(如实体,存储库)的正确方法是什么
我怀疑MVC模式本身就有关域名的特别说明.它将模型作为一系列属性运行,不关心它是如何创建的,以及它如何保护其不变量. 与此同时,Onion architecture表示将域脱离应用程序服务(MVC框架是)非常重要.所以我喜欢将包含实体,值对象,域事件和聚合的域层放置到单独的模块或顶级文件夹中. 将域分开放置在MVC中的另一个原因是,它可以让您更轻松地管理多个bounded contexts,因为每个上下文都需要自己的模块/文件夹. 我建议你查看this ASP MVC project结构.它是由着名的DDD专家设计的.除了域名,请查看MVC部分的组织方式.它利用了feature slice的方法,这些方法越来越受欢迎,我觉得这非常有用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |