这完全取决于您的编码风格。秘诀是:用PHP编写经典的MVC是不可能的。
任何声称你可以的框架都在骗你。现实情况是,框架本身甚至无法实现MVC -- 你的代码可以。但我想,这并不是一个好的营销宣传。
要实现经典的MVC,您需要首先使用持久模型。此外,Model应该通知View有关更改(观察者模式)的信息,这在您的普通PHP页面中也是不可能的(如果您使用套接字,则可以做一些接近经典MVC的事情,但这对于真正的网站来说是不切实际的)。
在Web开发中,您实际上还有其他4种受MVC启发的解决方案:
Model2 MVC:View 从模型请求数据,然后决定如何呈现数据以及使用哪些模板。控制器负责更改视图和模型的状态。
-
MVVM:控制器被换成ViewModel,它负责View的期望和模型的逻辑之间的转换。查看来自控制器的请求数据,这会转换请求,以便模型可以理解它。
大多数情况下,当您无法控制视图或模型层时,会使用它。
-
MVP(php框架称之为“MVC”):表示器从模型请求信息,收集信息,修改信息,然后将其传递给被动视图。
为了探索此模式,我建议您从本出版物开始。它将详细解释它。
HMVC(或PAC):与Model2不同,控制器能够执行子控制器。每个都有自己的M,V和C三元组。您可以获得模块化和可维护性,但会因性能受到一些影响而付出代价。
无论如何。底线是:你还没有真正使用过MVC。
但是,如果您厌倦了所有类似MVC的结构,则可以查看:
- 事件驱动架构
- n 层体系结构
然后总是有DCI范式,但是当应用于PHP时,它有一些问题(你不能在PHP中转换为类......没有丑陋的黑客)。
根据我的经验,在为Web开发时,您从MVC架构中获得的好处远远超过其成本和明显的开销。
对于从复杂的MVC框架开始的人来说,做出额外的努力来分离三层,并很好地感觉到什么属于哪里(有些事情是显而易见的,有些可能是相当边缘的,往往是很好的讨论话题),这可能有点令人生畏。我认为从长远来看,这种成本是可以收回成本的,特别是如果你期望你的应用程序在一段合理的时间内增长或维护。
我遇到过这样的情况:由于层的良好分离,创建新API以允许其他客户端连接到现有Web应用程序的成本非常低:业务逻辑根本没有连接到演示文稿,所以它是蛋糕。
在当前的MVC框架生态系统中,我相信您的里程可能会有很大差异,因为原理很常见,但是Zend,Django,RoR和SpringMVC之间存在很多差异。
如果真的有其他好的替代方案来替代这种范式......我对答案很感兴趣!
抱歉,文字墙很小!
-
相当于Java中PHP的crypt函数 我正在将我的PHP代码迁移到Google App Engine - Java。因此,我需要一个相当于Java中PHP的crypt函数,因为我已将使用crypt的注册用户的所有密码存储在我的数据库中。 编辑1:这是我用于加密密码的php
-
需要有关如何从接受语言请求标头获取首选语言的示例 我需要一个代码示例或库来解析标头并返回我的首选语言。 指出: “接受语言请求标头”字段类似于“接受”,但限制首选作为请求响应的自然语言集。语言标记在第 3.10 节中定义。
-
无法在 Java 和 PHP 之间交换使用 AES-256 加密的数据 我的问题是:我在Java中加密的东西,我可以在Java中完全解密,但PHP不能解密。我用加密的内容可以使用 解密,但不能在 Java 中解密。 我想从Java应用程序发送和接收加密数据到PHP页面,所以我
-
-
Quercus是Java环境中PHP的可行替代品吗? 对于任何偶然发现这个问题的人,他们不知道是什么 - 它是用Java完成的PHP的实现。 对于我目前正在从事的项目,我们通过cgi在servlet上提供php页面(我知道它很笨拙,但这是支持遗留代码的要求