我一直在为我的新工作学习Zend及其MVC应用程序结构,发现与它一起工作只会使我感到困扰,原因是我无法完全动手。然后在学习过程中,我遇到了诸如MVC:NoSilverBullet之类的文章,以及有关MVC和Web应用程序的播客。播客中的那个人非常反对将MVC作为Web应用程序体系结构,并钉住了很多困扰我的东西。
但是,问题仍然存在,如果MVC并非真的很适合Web应用程序,那是什么?
这完全取决于您的编码风格。这就是秘密: 用PHP编写经典MVC是不可能的。
任何声称可以做到的框架都是在骗你。现实是框架本身甚至无法实现MVC,而您的代码可以。我想这并不是一个很好的市场推广。
要实现经典的MVC,首先需要您拥有持久的模型。此外,Model应该将有关更改(观察者模式)的信息通知给View,这在原始PHP页面中也是不可能的(如果使用套接字,则可以做一些与经典MVC相似的操作,但这对于实际网站而言是不切实际的)。
在Web开发中,您实际上还有其他4个受MVC启发的解决方案:
Model2 MVC :View正在从Model请求数据,然后决定如何呈现它以及使用哪些模板。控制器负责更改视图和模型的状态。
MVVM :控制器换成ViewModel,后者负责View的期望值与Models的逻辑之间的转换。查看来自控制器的请求数据,该数据将转换请求,以便模型可以理解它。
当您无法控制视图或模型层时,通常会使用此方法。
为了探索这种模式,我建议您从本出版物开始。它将详细解释。
无论如何。最重要的是:您还没有真正使用过MVC。
但是,如果您厌倦了所有类似于MVC的结构,则可以查看以下内容:
然后总是存在DCI范式,但是将其应用于PHP时会遇到一些问题(您不能在PHP中转换为类..如果没有丑陋的hacks)。