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

bco*_*sca 28 php model-view-controller

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

哪种方法更好?

Gor*_*don 39

控制器和模型之间的界限实际上非常清楚.

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

控制器(和视图)是表示层的一部分.控制器的唯一责任是接收和处理针对您的应用程序的用户输入,并将其委托给模型中的相应部分.而已.它不应该处理复杂的应用程序流或问题域的代码.你希望控制器是瘦的,并用逻辑模拟脂肪.模型不应该知道C或V,你应该能够将V和C换成不同的表示层,而不必触摸你的M.

请参阅企业应用程序架构模式中的MVC摘录

  • 我站着(或者更确切地说,坐在我的电脑桌上的椅子上......)纠正了.+1 (2认同)