我刚开始学习PHP,刚刚完成$_POST
/ $_GET
。
现在我想知道,让PHP从同一文件中的表单处理数据,或将数据发送到另一个文件(action="anotherfile"
)的专业人士和成员是什么? ?
逻辑上我会认为将它发送到另一个文件会增加处理时间,但这是真的吗? 当我在同一个文件中有PHP脚本时,当我点击提交按钮(但内容发生变化)时,页面似乎没有重新加载。或者是吗?如果是这样,那么唯一的区别就是我必须在两个文件中输入菜单的脚本(假设你在所有页面上都有相同的菜单)?哪会导致更多编码/更少空间?
答案 0 :(得分:11)
让PHP从同一文件中的表单处理数据,或将数据发送到另一个文件(action =“anotherfile”)的专业人员是什么?
您正在混淆文件和网址。
通过将逻辑拆分为不同的文件(然后在适当的时候include
d),seperate concerns并使您的代码更易于管理。
通过让一个URL负责显示表单和处理表单数据,您最终不会陷入处理结果的尴尬境地表单数据要求您重新显示包含错误消息的表单。如果您使用了两个不同的URL,则需要在处理URL上显示表单(因此您有两个不同的URL显示表单)或执行HTTP重定向回原始URL,同时以某种方式将错误的详细信息传递给它
逻辑上我会认为将它发送到另一个文件会增加处理时间,但这是真的吗?
没有。它在处理的时间尺度上没有任何区别。
当我在同一个文件中使用PHP脚本时,当我点击提交按钮时,页面似乎没有重新加载(但内容发生了变化)。
重新加载。
如果确实如此,那么唯一的区别就是我必须在两个文件中输入菜单的脚本(假设你在所有页面上都有相同的菜单)?
这就是include
的用途。
答案 1 :(得分:2)
在任何语言中,我们总是尝试编写干净的代码。这就是我们遵循MVC的原因。
逻辑上我会认为将它发送到另一个文件会增加处理时间,但这是真的吗?我想不。
因为当我们将数据发送到另一个页面并在顶部的另一个页面上时,我们回显该帖子数据并退出。你会发现它不会花费时间。我们在那之后重定向/加载一些html页面需要时间。
我们发送数据的位置(同一页面或其他页面)无关紧要。物质就是在那之后加载的东西。
答案 2 :(得分:2)
速度没有区别。
如果您在标准提交中发布表单内容,则会将此数据发送到服务器并下载响应(处理后)。
唯一的区别在于组织代码。绘制页面(菜单或其他固定部分)的逻辑应存储在某个文件中,您可以单独包含或通过函数调用。
当您发布数据时,出于某种原因也是如此,例如注册用户。处理用户注册的php文件会这样做并输出消息而不是其他功能是一个很好的实践。 如果你的文件有一些逻辑开关使它输出一个空表单或一个注册消息,基于post或get变量的存在,你会注意到当你扩展到更复杂的任务时,这将增加复杂性并使代码维护变得更难。
答案 3 :(得分:1)
我会尽力通过重述来理解你的问题。
如果您有一个表单(/form.php
),并且该提交按钮的“操作”会引导您进入单独的php页面(/form_action.php
),那么速度绝对没有区别。每个HTTP请求(form.php
和form_action.php
)都是独立的 - “form_action.php”不记得有关“form.php”的任何内容,除非您通过(作为参数)传递该信息。这就是人们说HTTP is stateless时的意思。除了PHP的细节之外,值得了解how HTTP works。
如果您有一个PHP脚本,而该脚本又包含其他PHP脚本,则会产生微小的性能影响 - 在我遇到过的任何情况下都无法衡量。
但是,使用includes允许您将标记(HTML)与逻辑(PHP)分开。如果你做的不是修修补补,这是一件非常好的事情。它允许您重用功能,它使得更改和维护代码变得更加容易,并且它可以帮助您思考您想要实现的目标。
人们解决“我如何保持代码清洁”难题的方式有很多种;目前的正统是"Model-View-Controller"(如@monty所说)。还有PHP框架使这更容易实现 - 一旦你掌握了语言的基础知识,你可能想看看Zend或TinyMVC(还有其他几个,每个都有他们的利弊)。