草庐IT

domain-driven-design

全部标签

php - 您是否将存储库注入(inject)域对象?

在每天学习10多个小时的领域驱动设计一周之后,我开始觉得我已经开始很好地理解它了,直到我今天读了这篇文章:http://blog.fedecarg.com/2009/03/15/domain-driven-design-the-repository/那篇文章的作者说你将Repository注入(inject)到Domain对象中,这对我来说没有任何意义。我不是这方面的专家,但我认为他是错的,但我想听听这里的一些人关于将存储库注入(inject)域对象是对还是错的一些意见。在我上周阅读的所有内容中,每天阅读另一篇文章和另一篇文章对我来说都是一样的(这是一件好事),直到我看到上面发布的文章

PHP MVC : Data Mapper pattern: class design

我有一个带有域对象和数据映射器的WebMVC应用程序。数据映射器的类方法包含所有数据库查询逻辑。我试图避免镜像任何数据库结构,因此,在构建sql语句时实现最大的灵active。因此,原则上,我尽量不使用任何ORM或ActiveRecord结构/模式。举个例子:通常,我可以有一个抽象类AbstractDataMapper由所有特定数据映射器类继承-如UserDataMapper类。然后我可以在AbstractDataMapper中定义一个findById()方法,通过给定的id值,例如用户身份。但这意味着我总是从单个表中获取记录,而不可能使用任何左连接来从对应于给定id-用户id的其他一

php - 将 DDD 与事件溯源混合在一起

我无法理解将DDD与ES混合在一起的概念。我认为事件是领域方面的一部分。鉴于将它们从存储库发布到外部世界并保持模型纯净和简单没有问题。但除此之外,必须有可能在特定聚合上重播它们。这是我的问题发生的地方。我想让我的域模型保持与lib/framework无关的纯粹和简单的对象。要在聚合上应用过去的事件,聚合必须意识到自己是ES结构的一部分(因此它不会保持纯域对象)。由于聚合的主要工作是强制执行一些可能随时间演变的业务不变量,因此不可能使用聚合API应用旧事件。例如,聚合Post和子实体Comments。TodayPost允许添加10条评论,并且方法addCommnet()守卫该规则。但过去

PHP DDD如何命名入口点方法?

遵循DDD设计原则时,在php中命名服务中的入口点方法的最佳实践应该是什么。与类相同:classGetSinglePerson{...publicfunctiongetSinglePerson($personId){}}命令模式:classGetSinglePerson{...publicfunctionexecute($personId){}}适配器模式:classGetSinglePerson{...publicfunctionhandle($personId){}} 最佳答案 一些不适合评论的评论;)DDD是notanarch

php - 无法加载 URL : The domain of this URL isn't included in the app's domains. 要能够加载此 URL... Codeigniter

我正在尝试使用codeigniterphp登录facebook应用程序。我收到错误:WarningCan'tLoadURL:ThedomainofthisURLisn'tincludedintheapp'sdomains.TobeabletoloadthisURL,addalldomainsandsubdomainsofyourapptotheAppDomainsfieldinyourappsettings.我做了一些研究,我认为我在Facebook应用程序中的有效OAuth重定向URI是错误的/无效的。有人可以指导我如何解决这个问题吗?这是我的链接图片 最

php - 在 View 中使用 getter 是一种好习惯吗?

我有两个表:Campaigns、Campaign_statistics。我需要输出包含嵌套统计信息的事件列表。首先,我在模型中有一个方法创建了一个如下所示的数组:array('id',//integer'campaign_name',//string'stats'//nestedarrayofarrayswithstatsbyperiods);在一个View中,我有两个foreach循环(一个嵌套在另一个循环中):campaignsas$campaign):?>模型的实现会导致代码困惑,因此我决定尝试将Campaign设为一个对象。在一个View中,我使用了getter:campaig

php - 域模型 MVC 中的 native 数据库查询

我构建了一个MVC应用程序,其模型层包含实体、数据映射器和服务类。到目前为止,一切都很好。但是现在我有一个Controller需要显示一个报告,其中包含来自多个数据库表的数据,与我的模型中的任何实体都没有关系。该报告是根据包含连接、SUM/AVG选择的高级MySQL查询构建的。我想要的只是一个数据数组,以便在VIEW中显示。我能否在我的服务层混合方法,一些方法返回实体(“getById()”),一些方法只返回来self的数据库查询的数据数组(“getAdvancedReport()”)?可以将数据库查询直接放在服务层吗?如果没有,他们应该去哪里?数据映射器感觉不对,因为它的工作只是将我

php - 实体、存储库和组合 - 依赖注入(inject)

我正在尝试了解DDD,但有些关于实体和存储库的内容我无法理解。从这里的其他问题中,我意识到将存储库注入(inject)实体是一个坏习惯。但是如何在组合对象时避免注入(inject)存储库?让我们来看一个简单的情况——事件和事件应用程序。这看起来很简单。$event->add($application);$eventRepository->save($event);我相信$application是一个实体,所以我相信应该有一些$applicationRepository。这是否意味着我应该将$applicationRepository注入(inject)到$eventRepository

php - 与 Symfony 表单的关注点分离

我最近一直在尝试使用Symfony2表单,这对于简单表单非常有用。但是-为了在选择框或类似的东西中使用-我经常想要表单中的关联实体列表。在几篇博文和Symfony文档中,他们提出了这样的建议......//BlogPostTypeimplementsFormTypeInterfacepublicfunctionbuildForm(FormBuilderInterface$builder,array$options){$builder->add('category',null,array('property'=>'name','query_builder'=>function(Entit

php - Facebook 授权 : Can't Load URL: The domain of this URL isn't included in the app's domains

我知道这个问题之前在这个链接中被问过FacebookOAuth"ThedomainofthisURLisn'tincludedintheapp'sdomain",但该解决方案对我不起作用。它显示的错误是这样的:我也将我的域包含在应用程序的facebookapi域中,我传递的重定向url格式如下所示:https://example.com/clients/authorization/facebook/a1njk2nkll55343nlk4/page这里facebook/后面的随机字符是动态的客户端id。此外,我在通过facebook登录时也遇到了同样的问题。谢谢。