我想知道是否应该针对特定问题编写函数(例如function specific()
),或者我是否应该将这段代码放入一个php脚本并在需要时调用require 'specific.php'
?
我正在谈论的具体问题是处理通过POST请求填写的表单然后重定向浏览器,因为PRG(发布/重定向/获取)模式(包括,exit
将被调用,分别在require
函数调用后,代码不会继续。两个脚本需要处理请求的代码。请考虑以下代码:
somePage.php
require 'process_form_fnc.php'; // for Variant 2
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// process filled form
require 'process_form.php'; // Variant 1
process_form_fnc(); // or Variant 2
}
您会选择功能或需求变量(及其原因)吗?
答案 0 :(得分:2)
变体2.为什么?
答案 1 :(得分:2)
使用require
在当前位置插入任意代码块是一个糟糕的hackish(尽管并不罕见)。我总是希望将代码保存在函数中。
你可以找到类似的C讨论(#include
任意代码片段与函数),几乎相同的论点和同样明确的共识。
答案 2 :(得分:1)
使用包含通常只会出于以下几个原因:
1)您有一个通用或多用途代码片段,您可以在多个页面上使用
2)您希望将代码的某些部分抽象出一种类似“库”的容器/目录,以便进行组织。
答案 3 :(得分:1)
我很少直接使用include / require。我的大多数工作都是用类完成的,我使用__AUTOLOAD来加载它。我个人会使用变体2,因为你遇到了这个问题
$var = "test";
include "test.php";
$var = "test2";
include "test".php";
如果你在那里定义一个函数,可能会导致错误,比如用于排序。你会得到一份重复的声明。如果它是一个函数()
include "test.php";
outputTest("test");
outputTest("test2");
只要你没有在那个函数中定义一个函数,你应该没问题。
答案 4 :(得分:1)
该函数可能是我的偏好有几个原因,其中一个主要是变量的范围。
想象一下你使用“require”的情况,然后在某个地方编辑所需的代码,以包含一个与代码中其他地方的变量冲突的新变量。
想象一下,你使用一个快速的小通用变量,如$ x或$ i,你可能会创建间歇性的噩梦般的错误,这将是一个真正令人头疼的追踪。
答案 5 :(得分:1)
此代码应放在函数或方法中,以便它可以具有自己的变量作用域,而不是使全局名称空间变为云。我宁愿把它放在一个类的方法中。这样我就可以使用类自动加载器来仅在实际使用时加载包含的代码,并进一步清理全局命名空间。