大约有几百万个“ PHP框架”。他们中的大多数人本身都为 下列的 MVC模式。虽然欢迎克服OSCommerce编码样式(处理与SQL和HTML的处理逻辑的处理方式),但肯定有更简单,更容易遵循的方法来获得可维护的应用程序设计。

最初的MVC概念针对GUI应用。对于GTK/Python来说,相应地遵循它似乎是可行的。但是,PHP Web应用程序无法在实时视图(GUI元素)和持久控制器运行时运行。如果它只是描述了使用的代码 +目录分组或类命名,那肯定是错误的。

“ MVC”似乎像PHP框架的流行语一样使用。实际上,我已经看到一个或两个成熟的PHP框架承认了这一点,但是无论如何,重新定义了这句话以匹配Interna。
那通常是蛇油吗?为什么没有使用更好的术语,而对于可维护的PHP传播的更明智的概念?

一些精明的推理

为什么我怀疑PHP实施不遵循真正的MVC模式:

楷模: :从理论上讲,模型应为脂肪并包含业务逻辑,并且控制器应为薄处理程序(输入 - >输出)。实际上,PHP框架倡导者 浅的 楷模。 CI和Symfony例如等同于模型== ORM。即使是HTTP输入也是由控制器处理的,也不将其视为模型。

视图: :Ajax打折的解决方法,网页上无法有视图。 PHP框架仍然抽出页面。该界面仍然有效地遵循普通的HTTP模型,与非MVC应用程序没有优势。 (最后,没有一个广泛的PHP框架可以实际上输出到GUI视图而不是HTML。我已经看到一个可以操作GTK/Console/Web的PHP库,但是这些框架却没有。)

控制器: :我不确定。控制器可能不需要长期运行,并且在MVC模型中持续活跃。在PHP框架上下文中,它们主要是请求处理程序。并不是真正要争论的事情,但感觉有点流行语。

会有更好的描述符吗? 我已经看到诸如PMVC或HMVC之类的首字母缩写。尽管描述在那里变得更加歧义,但也许这些描述会描述当前的网络框架较少的曲折?

有帮助吗?

解决方案

我认为您正在以完全错误的方式看待这一点。 GUI应用程序和网页与众不同,因此MVC完全相同的定义将永远不适合两者。 MVC更多地是关于理想的:将应用程序的某些部分分开,例如显示和逻辑。

在PHP(或一般网络)中, 看法 是网页本身:HTML输出。它不是按照您的定义“实时”,而是单击链接即可返回控制器(即另一个页面请求)。

控制器模型 就像您解释的那样,事物确实有所不同。在PHP中,模型倾向于是数据层,与数据库相互作用等。但是它仍在对情况进行建模,并且控制器仍然控制应用程序流,如果每页加载一次一次。

因此,“ Model-View-Controller”的名称是完全合乎逻辑的,尽管GUI应用程序与Web应用程序中的实现不同。

其他提示

由于我不知道PHP框架,从低级语言视图可以看出。

楷模:

从理论上讲,模型应该是胖子并包含业务逻辑

这完全是要做的,我看不出PHP与此关系有什么关系...

模型是PHP中的数据类,可能与数据库进行通信,
然后,您还可以将相同的模型或JSON格式的部分模型发送给客户端。

我不会说业务逻辑,更像是数据逻辑(验证,数据库交互,导入/导出,...)。

控制器应为薄处理程序(输入 - >输出)

您的控制器类与模型类互动,它们确实很薄。

基于输出,对模型进行一些操作...并将模型视图返回给客户端...

实际上,PHP框架倡导浅模型。 CI和Symfony例如等同于模型== ORM。即使是HTTP输入也是由控制器处理的,也不将其视为模型。

我并不真正知道那些PHP框架...

但是HTTP输入应在到达控制器之前处理,
您可以轻松创建一个将数据转换为良好路由和参数的类。

这正是ASP.NET MVC 2中发生的事情,它没有错,
我不知道PHP将如何发生这种情况,但我想这将密切相关。

您甚至可以轻松地将GET和将数据发布到模型中,该模型可能包含构造函数逻辑。或为此目的添加一些单独的类。


视图:

Ajax打折的解决方法,网页上无法有视图。 PHP框架仍然抽出页面。

我不明白为什么不能,唯一的区别是协议和PHP可以返回JSON等...

页面是您的视图,它可以通过AJAX + JSON请求和更新。
同样,我并不是真的知道那些PHP框架,但是在ASP.NET MVC 2中,它是这样起作用的。

该界面仍然有效地遵循普通的HTTP模型,与非MVC应用程序没有优势。 (最后,没有一个广泛的PHP框架可以实际上输出到GUI视图而不是HTML。我已经看到一个可以操作GTK/Console/Web的PHP库,但是这些框架却没有。)

您获得的唯一优势(与正常应用程序相同)是将模型(数据) +视图(GUI) +控制器(逻辑)分开。类似地,您看不到可以实际输出到HTML或JSON而不是GUI视图的C ++框架。


控制器:

我不确定。控制器可能不需要长期运行,并且在MVC模型中持续活跃。在PHP框架上下文中,它们主要是请求处理程序。并不是真正要争论的事情,但感觉有点流行语。

MVC是一种软件体系结构/模式,控制器运行,并且不使用MATHE时间。

但是,PHP Web应用程序无法在实时视图(GUI元素)和持久控制器运行时运行。

不,他们肯定会!

想想Ajax应用程序,然后该视图向控制器问一些东西,并获得部分视图,
然后,此视图或数据被填充在页面中的某个地方,从而实时更新。

控制器也持续使用,因为您可以使用cookie/sessions。

“ MVC”似乎像PHP框架的流行语一样使用。

MVC是一种软件体系结构,有些框架可能将其用作嗡嗡声,而另一些框架则正确地做到了...
Wikipedia上的一些框架清单.

MVC只是PHP编程的SEO吗?

MVC和SEO是相隔两件事,但是是的... MVC越来越受欢迎。

我认为在PHP中使用MVC将程序员带入网络。当您知道如何使用MVC时,从例如Java到PHP会更容易。

许可以下: CC-BY-SA归因
scroll top