【发布时间】:2013-10-14 13:15:28
【问题描述】:
我读了一篇关于如何创建域对象here 的文章。 作者正在解释如何设计这些类。简而言之,每个现实世界的实体都有一个类(即 User、Comment、Post 等类)和 getter + setter(检查数据的有效性)。
对于一对多的关系,例如与单个帖子相关的所有cmets,作者使用数组将Comment类的实例存储到Post类的实例中。但这是我不明白的:
$post = new Post();
$post->addComment( new Comment() );
$post->addComment( new Comment() );
$post->addComment( new Comment() );
$postModel = new PostModel();
$postModel->insert( $post ); // Should also insert (or not !) the added comments.
当我们要插入新帖子时,相关的 cmets 可能实际存在也可能不存在(我的示例没有多大意义,因为您只能评论存在的帖子,但这只是一个示例)。模型是否应该在添加之前检查每个添加的 cmets 是否存在?
另外,如果您知道一篇文章可以解释如何正确编写模型,并且与上述文章的作者使用的哲学相同,那就太好了。
【问题讨论】:
-
不,模型不应该检查它,这是控制器的工作
-
感谢您的评论。为什么它是控制器的工作?
-
由于MVC的逻辑:en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller你的模型中的
insert()方法应该在控制器成功响应后调用 -
如果只有一些要插入的 cmets 存在怎么办。控制器应该指定哪些或应该中止整个插入?
-
取决于您想要实现的目标。但这两种情况都是控制器的工作。如果 10 个模型中的 1 个不存在则继续操作并不重要,请不要停止应用程序。
标签: php database-abstraction domain-object