【发布时间】:2016-05-27 10:49:55
【问题描述】:
我无法决定这是基础设施还是领域责任:
用户可以在 url 查询中传递日期范围,例如 dateStart=2016-04-12 , dateEnd=2016-04-15。基于该日期范围,我们返回在这两个日期之间具有字段 createdOn 的实体列表。为了使这项工作正常,我必须将 2016-04-12 转换为 2016-04-12 00:00:00 和 2016-04-15 转换为 2016-04-15 23:59:59,这种转换是否应该被视为基础设施问题(并且应该放在存储库中,或者可能是应用层)或业务规则(并且应该放在服务或实体中)?
【问题讨论】:
-
理想情况下,您应该有一个服务类或库类,其中包含所有常用功能。例如,在这种情况下,一个名为 formatInputDate 的函数可能是一个您可以用来格式化日期的函数。
-
这似乎是一个数据约束,因为您的应用程序规则允许短 ISO 日期格式,而您的数据库仅支持长 ISO 日期格式。所以,它是一个数据库函数,应该放在数据访问层(或者存储过程/视图,如果你使用它们的话)。
-
DateRange似乎是一个非常重要的概念。我将它建模为一个执行日期范围规则的值对象。日期范围的边界将由日期值定义。应用程序服务将接收字符串并创建一个DateRange。然后DateRange将被传递到存储库。然后,日期格式将在存储库中进行(委托给日期实用程序方法)。
标签: php oop domain-driven-design