php - 比 MVC 更适合 Web 应用程序的架构?

标签 php model-view-controller web-applications architecture

我一直在为我的新工作学习 Zend 及其 MVC 应用程序结构,并且发现使用它只是因为我无法完全理解的原因而困扰我。然后在我的学习过程中,我遇到了诸如 MVC: No Silver Bullet 之类的文章。和 this podcast关于 MVC 和 Web 应用程序的主题。播客中的那个人很好地反对 MVC 作为 Web 应用程序架构,并指出了很多困扰我的问题。

但是,问题仍然存在,如果 MVC 真的不适合 Web 应用程序,那么什么才是?

最佳答案

这完全取决于您的编码风格。这是 secret :用 PHP 编写经典 MVC 是不可能的。

任何声称你可以的框架都是在骗你。事实上,框架本身甚至无法实现 MVC——您的代码可以。但我猜这不是一个很好的营销策略。

要实现经典 MVC,您首先需要拥有持久模型。此外,Model 应该通知 View 有关更改(观察者模式),这在您的 vanilla PHP 页面中也是不可能的(如果您使用套接字,您可以做一些接近经典 MVC 的事情,但这对于真实网站来说是不切实际的)。

在 Web 开发中,您实际上有 4 个其他受 MVC 启发的解决方案:

  • Model2 MVC:View 正在从 Model 请求数据,然后决定如何呈现它以及使用哪些模板。 Controller 负责更改 View 和模型的状态。

  • MVVM:Controller 换成了 ViewModel,ViewModel 负责 View 的期望和 Models 的逻辑之间的转换。查看来自 Controller 的请求数据, Controller 翻译请求以便模型可以理解它。

    大多数情况下,当您无法控制 View 或模型层时,您会使用它。

  • MVP(php 框架称为“MVC”):Presenter 从 Model 请求信息,收集信息,修改信息,并将其传递给被动 View。

    要探索这种模式,我建议您从 this publication 开始.会详细解释的。

  • HMVC(或 PAC):与具有 Controller 执行子 Controller 能力的 Model2 不同。每个都有自己的 M、V 和 C 三元组。您获得了模块化和可维护性,但付出了一些性能损失。

无论如何。底线是:您还没有真正使用过 MVC。

但是如果你厌倦了所有类似 MVC 的结构,你可以看看:

  • 事件驱动架构
  • n 层架构

然后总是有 DCI范例,但它在应用于 PHP 时存在一些问题(您不能转换为 PHP 中的类......并非没有丑陋的黑客)。

关于php - 比 MVC 更适合 Web 应用程序的架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7621832/

相关文章:

java - MVC - Controller 与模型职责

php - .htaccess 在 Windows 上工作,但在 ubuntu 中的 apache2 上不起作用

php - jquery php代码从mysql数据库表绑定(bind)州和城市

javascript - Ajax/Javascript - 仅刷新一次

java - 使用 mvc 时将在不同类上创建的 jpanel 添加到主视图页面

java - 多个url映射到同一个controller方法时,查找哪个url访问controller

javascript - Google Chrome 扩展程序/网络应用程序可以请求自己的 ID 字符串吗?

java - ID 必须存在于容器中或作为生成的列,缺少 id : id

java - 使用 JInitator 的 Internet Explorer 8 中的 Oracle Forms/Applications

php - UTF-8贯穿始终