在MVC中,您在哪里绘制控制器和模型之间的界限?

时间:2010-08-17 04:26:43

标签: php model-view-controller

我已经看到了代码,其中几乎所有与非路由相关的代码都被传递给模型。我还看到了代码,其中所有数据库持久性都由模型处理,但非DB处理由控制器处理。

哪种方法更好?

1 个答案:

答案 0 :(得分:39)

控制器和模型之间的界限实际上很清楚。

模型是您应用的核心。它包含解决应用程序编写问题所需的业务/域逻辑。模型通常分层为几个其他层,例如持久性,服务,域等等。模型只是数据库是一种常见的误解,因为数据库应该是ActiveRecord是一种常见的误解。

控制器(和视图)是表示层的一部分。控制器的唯一责任是接收和处理针对您的应用程序的用户输入,并将其委托给模型中的相应部分。而已。它不应该处理复杂的应用程序流或问题域的代码。 You want controllers to be skinny and models fat with logic。模型不应该知道C或V,你应该能够将V和C替换为不同的表示层,而不必触摸你的M.

请参阅MVC Excerpt in Patterns of Enterprise Application Architecture