当使用ORM表示表时,使用非表特定函数是否明智?
例如(不是逐字记录) 或者ORM应该只是桌子,而不是别的当使用ORM表示表时,使用非表特定函数是否明智?,orm,language-agnostic,Orm,Language Agnostic,例如(不是逐字记录) 或者ORM应该只是桌子,而不是别的 这可能是一个主观的观点,因为每个人都有自己的观点,但在编程中,你做的事情和你真正不应该做的事情。我只是想知道这是不是其中之一。不是,这不是个好主意。如果没有别的,那就是违反 如果您正在制作ORM,那么您的实例应该只处理数据存储/检索。在您的示例中,getDuration()是域业务逻辑的一部分,应该驻留在域中 基本上,这里讨论的是和模式之间的差异。而且,如果你试图编写遵循坚实的原则的代码,你会认为主动记录是一种反模式,这在长期内是不可减轻
这可能是一个主观的观点,因为每个人都有自己的观点,但在编程中,你做的事情和你真正不应该做的事情。我只是想知道这是不是其中之一。不是,这不是个好主意。如果没有别的,那就是违反 如果您正在制作ORM,那么您的实例应该只处理数据存储/检索。在您的示例中,
getDuration()
是域业务逻辑的一部分,应该驻留在域中
基本上,这里讨论的是和模式之间的差异。而且,如果你试图编写遵循坚实的原则的代码,你会认为主动记录是一种反模式,这在长期内是不可减轻的。 < P>不,这不是一个好主意。如果没有别的,那就是违反 如果您正在制作ORM,那么您的实例应该只处理数据存储/检索。在您的示例中,
getDuration()
是域业务逻辑的一部分,应该驻留在域中
基本上,这里讨论的是和模式之间的差异。而且,如果你试图编写遵循坚实的原则的代码,你会认为主动记录是一种反模式,这在长期上是不起作用的。 < P>除非有一些没有特定功能的应用特定的原因,答案是一个大的“是”。让我解释一下原因:
除非有一些特定于应用程序的原因导致没有该功能,否则答案是肯定的。让我解释一下原因:
谢谢你的回复。这对我来说是有道理的,有时候在做正确的事情和把事情搞砸之间有一条细微的界限。谢谢你的回复。这对我来说是有道理的,有时候在做正确的事情和把事情搞砸之间有一条很好的界限。你的建议是,应该围绕ORM构建域业务逻辑。这太疯狂了。目标应该是让ORM和业务逻辑独立工作。如果ORM存储一个域对象,它应该只需要该域对象实现一个特定的接口。“你的建议是,应该围绕ORM构建域业务逻辑”。我说的恰恰相反,我的建议有三个理由。他的类(一个实体)是一个域对象,因此它应该包含业务逻辑。。没有关系。看起来“是”是对文章主体中问题的回答,而不是标题。是的,我后来意识到我回答的第一句话有点含糊不清。你的建议是,应该围绕ORM构建域业务逻辑。这太疯狂了。目标应该是让ORM和业务逻辑独立工作。如果ORM存储一个域对象,它应该只需要该域对象实现一个特定的接口。“你的建议是,应该围绕ORM构建域业务逻辑”。我说的正好相反,给三个r
/**
@Entity
*/
class Event
{
/**
@Column
*/
protected $time_start;
/** .. */
protected $time_end;
/** getters, setters, etc */
/** @return duration of event as a string, non-table function */
public function getDuration() { ... }
}