我最近阅读了这篇文章,这导致了一系列其他文章似乎都暗示了相同的想法:模型做所有事情,视图应该能够直接与模型通信,反之亦然,而控制器则不受影响。然而,所有显示的示例都相当简单,没有一个真正显示任何人如何尝试实现对请求/响应周期的完整处理的示例,这让我想知道“模型是否应该负责处理请求(即$_GET、$_POST 等)本身?” 和“控制器是否应该仅作为传递来实例化必要的模型并将模型传递给视图?”。(事实上我发现了一个极端的例子,就是在模型中嵌入一个 Zend_Form 对象)
根据我对 Fowler 对 MVC 和控制器的一般看法的阅读,乍一看似乎控制器层越薄越好。但是后来我花时间回顾并研究了他对 MVC 和 Front Controller 的说法(这只是把水弄得一团糟,因为这两种模式都定义了控制器),现在我的直觉表明 Zend_Framework 在实现这两种模式时,实际上已经创建了一个复合对象,它执行 MVC 中的 Controller 和 Front Controller(或某些类似)中的 Command 对象的功能。
所以我想知道在他们的应用程序中实现了类似模式的其他人的一般意见是什么——你是完全在控制器层内处理请求,还是让模型知道请求并直接在模型内处理参数?