一尘不染

在MVC中,如何在控制器和模型之间划清界限?[关闭]

php

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

哪种方法更好?


阅读 220

收藏
2020-05-29

共1个答案

一尘不染

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

模型是您应用程序的心脏。它包含解决您的应用程序所针对的问题所需的业务/域逻辑。通常将模型分为其他几层,例如持久性,服务,域等。这是一个普遍的误解,认为模型只是数据库,这与普遍的误解是,数据库应该是ActiveRecord。

控制器(和视图)是表示层的一部分。控制器的唯一责任是接收和处理直接针对您的应用程序的用户输入,并将其委托给模型中的相应部分。而已。它不应处理复杂的应用程序流程或问题域的代码。模型不应该知道C或V,并且您应该能够将V和C换成其他表示层,而无需碰触M。

2020-05-29