在MVC框架中构建模型?

时间:2010-06-30 20:57:30

标签: php model-view-controller

我想知道是否有最好的做法,我正在建立一个需要相当多模型的网站,我不想最终得到一个非结构化的混乱。基本上我正在寻找一个很好的规则表来构建模型。现在我只能想到两种方式:

  • db中的每个表都有自己的模型,即。 accounts.php,books.php等。
  • 模型表示与网站的核心模块有关的方法集合,即。一个登录模型,包含登录,注销等方法,一个处理会话的模型,一个处理cookie的模型

谢谢你的时间!

5 个答案:

答案 0 :(得分:4)

suggest表示 model!= table

相反,模型代表应用程序域逻辑的某个组件。这个可能有时与数据库表一一对应,但也可能是模型由多个数据库表组成,或者没有数据库表。有些模型可能包含其他模型的集合。还有一些表可用于多个模型类。

模型和表之间的一对一关系对于简化应用程序很有吸引力,但它是一种可能会产生误导的耦合。

在MVC中,Controller和View相对简单明了。它们对应于处理输入并生成输出。模型很难,因为这是应用程序的其余部分数据和逻辑。欢迎来到OO设计和架构!

有效学习如何有效地构建模型的资源是Eric Evans Domain-Driven Design或免费在线简短版Domain-Driven Design Quickly

答案 1 :(得分:2)

这不容易回答。看看我对类似问题的一些回答

了解一些想法。但基本上,所有这些都主要参考Patterns of Enterprise Application Architecture,所以你也可以缩短它们。


我将此标记为社区Wiki,因为它仅引用了一些答案。随意投票给他们而不是这个答案。

答案 2 :(得分:1)

每张桌子的模型是目前最常用的方式。我认为也是最干净的。你的第二种方法最终将成为一种非结构化的混乱。

但我认为他们最终都会变得相同。因为您可能只触摸会话模型中的一个表,以及登录模型中的一个表等。

答案 3 :(得分:1)

ORM这样的Doctrine可以极大地帮助保持秩序,但确实增加了开销。

请记住,模型应该是MVC结构中唯一与数据库对话并包含核心业务逻辑的部分。只要你坚持这条规则,你就走在了正确的轨道上。

答案 4 :(得分:1)

唯一可能导致模型文件夹混乱的想法是,如果您的应用程序变得越来越大,并且您的框架不允许您在子文件夹中构建模型,或者您没有这样做。

尝试ORM。它有非常严格的规则,因此你的结构不会出错。