Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP表单处理-分布式还是集中式?_Php_Forms_Post - Fatal编程技术网

PHP表单处理-分布式还是集中式?

PHP表单处理-分布式还是集中式?,php,forms,post,Php,Forms,Post,我到处寻找,但似乎没有一个明确的共识,哪一个更好。目前,站点上的所有HTML表单都指向一个PHP文件。每个表单都有一个指定操作的隐藏输入(例如“用户登录”、“用户注销”),PHP文件从中调用方法 所以我的问题是:我应该将每个表单指向它自己,将相关表单指向单个文件,还是将所有表单指向单个文件?就MVC而言,处理应该在控制器或表单中进行吗?您提出的问题与MVC密切相关。在我看来,将所有东西都指向某个脚本不会有任何损失,但会赢得执行某些操作的灵活性,而无需重复(可能在某个地方是foget)这些操作 所

我到处寻找,但似乎没有一个明确的共识,哪一个更好。目前,站点上的所有HTML表单都指向一个PHP文件。每个表单都有一个指定操作的隐藏输入(例如“用户登录”、“用户注销”),PHP文件从中调用方法


所以我的问题是:我应该将每个表单指向它自己,将相关表单指向单个文件,还是将所有表单指向单个文件?就MVC而言,处理应该在控制器或表单中进行吗?

您提出的问题与MVC密切相关。在我看来,将所有东西都指向某个脚本不会有任何损失,但会赢得执行某些操作的灵活性,而无需重复(可能在某个地方是foget)这些操作

所以我建议将所有表单指向一个脚本


顺便说一句,是管理员根据web MVC处理表单。

您提出的问题与表单密切相关。在我看来,将所有东西都指向某个脚本不会有任何损失,但会赢得执行某些操作的灵活性,而无需重复(可能在某个地方是foget)这些操作

所以我建议将所有表单指向一个脚本


顺便说一句,在web MVC中,是控制器处理表单处理。

在MVC中,您的处理应该在控制器中进行。表单(视图)中不应该有任何处理逻辑。每个表单是否有不同的控制器取决于您。例如,您可以有一个控制器,它接受所有表单提交并执行一些公共处理(如csrf检测),然后为每个表单调用其他控制器。或者,您可以使用一个控制器,从数据库加载验证需求,并根据提交的表单的不同而采取不同的行为。

在MVC术语中,您的处理应该在控制器中进行。表单(视图)中不应该有任何处理逻辑。每个表单是否有不同的控制器取决于您。例如,您可以有一个控制器,它接受所有表单提交并执行一些公共处理(如csrf检测),然后为每个表单调用其他控制器。或者,您可以使用一个控制器从数据库加载验证需求,并根据提交的表单的不同行为

我应该将每个表单指向其自身,将相关表单指向单个文件,还是将所有表单指向单个文件

您应该将所有内容指向
index.php
,然后它会委托其他组件(MVC术语中的控制器)来处理。然后,控制器将决定要渲染的视图<在这种情况下,code>index.php就是我们称之为前端控制器的东西。(注意:下面我推荐ZF1作为学习平台。ZF1有一个“前端控制器”类。有些人可能会认为其中一个是前端控制器,
index.php
就是他们所说的入口脚本。在我看来,这只是第二个“前端”控制器。然而,这两个观点都有争议,所以请发表自己的观点)

就MVC而言,处理应该在控制器或表单中进行吗

就OOP而言,首先也是最重要的:对象是唯一知道如何验证自己数据的人(自包含原则),因此表单应该验证自己。如果是关于一个模型的,那么这个模型应该由控制器或者表单调用——这是一个品味的问题。无论采用哪种方式,都适用相同的原则:向模型提供数据并调用验证方法

您可能已经注意到,
表单
类是一个
模型

不要让自己被称为MVC的炒作所愚弄首先要尊重OOP原则

关于MVC:MVC模式说:控制器只协调其他组件,例如它接受输入,创建表单实例,并调用表单的验证方法

我建议您使用一个框架来更好地了解所有这些部分是如何协同工作的。最好的是zend framework 1,它与实际需求关系不大,但在模式和实践方面是一个杰作

也许ZF2会用额外的前端控制器来改变这个错误


看看其他答案,我觉得有必要澄清我的答案中使用的一些术语:

  • Model
    是一个模型。有很多关于MVC的文档
  • 表单
    模型
    的子类。它负责验证。它还可能有一个方法
    Form::\uu toString()
    ,用于在视图中呈现HTML表单(MVC中的V)
  • 视图是html文件,它是在控制器的监督下呈现的(MVC中的C)

总而言之,整个执行流程如下所示:

  • 
    我应该将每个表单指向其自身,将相关表单指向单个文件,还是将所有表单指向单个文件

    您应该将所有内容指向
    index.php
    ,然后它会委托其他组件(MVC术语中的控制器)来处理。然后,控制器将决定要渲染的视图<在这种情况下,code>index.php
    就是我们称之为前端控制器的东西。(注意:下面我推荐ZF1作为学习平台。ZF1有一个“前端控制器”类。有些人可能会认为其中一个是前端控制器,
    index.php
    就是他们所说的入口脚本。在我看来,这只是第二个“前端”控制器。然而,这两个观点都有争议,所以请发表自己的观点)

    就MVC而言,处理应该在控制器或表单中进行吗

    从面向对象的角度来看,首先也是最重要的是:obj