加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在MVC框架中实现DDD – PHP

发布时间:2020-12-14 00:48:24 所属栏目:百科 来源:网络整理
导读:在mvc中,模型是一个层,它包含所有的域业务逻辑. 在域驱动设计中,业务逻辑可以分为各种构建块. 在域驱动设计域模型中. A domain model is a system of abstractions that describes selected aspects of a sphere of knowledge,influence or activity (a doma
在mvc中,模型是一个层,它包含所有的域业务逻辑.
在域驱动设计中,业务逻辑可以分为各种构建块.

在域驱动设计域模型中.

A domain model is a system of abstractions that describes selected
aspects of a sphere of knowledge,influence or activity (a domain).
The model can then be used to solve problems related to that domain

开发人员已经阅读了域驱动设计,或正在使用Doctrine2或Hibernate,
通常在DDD中更好地关注域模型.在mvc框架中,模型层与DDD中的域模型重叠.这意味着我们可以在mvc框架中的模型文件夹中实现域模型

这样的实现如下所示.模型文件夹是如何结构的

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的构建块(如实体,存储库)的正确方法是什么

in mvc the model is a layer and it’s contain all the domain business
logic.

我怀疑MVC模式本身就有关域名的特别说明.它将模型作为一系列属性运行,不关心它是如何创建的,以及它如何保护其不变量.

与此同时,Onion architecture表示将域脱离应用程序服务(MVC框架是)非常重要.所以我喜欢将包含实体,值对象,域事件和聚合的域层放置到单独的模块或顶级文件夹中.

将域分开放置在MVC中的另一个原因是,它可以让您更轻松地管理多个bounded contexts,因为每个上下文都需要自己的模块/文件夹.

我建议你查看this ASP MVC project结构.它是由着名的DDD专家设计的.除了域名,请查看MVC部分的组织方式.它利用了feature slice的方法,这些方法越来越受欢迎,我觉得这非常有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读