我有这个PHP包含文件,我将使用的所有变量。我如何在函数的另一个文件中使用所有这些变量,而不用在该函数中再次声明它们为全局变量?
函数不能访问外部变量,除非将它们包括在内,或者将它们声明为全局变量,或者从全局变量中获取它们。在过去,我创建了数组和易于读取的变量。然后我引用数组变量,并且必须通过名称访问该变量。
您应该将它们作为参数传递给函数。如果需要这样做的对象太多,可以考虑使用对象而不仅仅是函数,然后在主文件中实例化对象的实例。或者,正如Craig提到的,除了主要函数参数之外,还可以在选项数组中传递全局变量。
可以使用以下命令访问全局作用域的所有变量:
$GLOBALS['varname']
为了避免一直使用$GLOBALS,你可以自动"全球化"变量:
把这个放到你的函数中来"导入"所有变量:
foreach($GLOBALS as $key=>$val){
if(!isSuperGlobal($key))
global $$key;
}
把这个帮助函数放在函数
之外的其他地方function isSuperGlobal($name){
switch($name){
case 'GLOBALS':
case '_SERVER':
case '_GET':
case '_POST':
case '_FILES':
case '_COOKIE':
case '_SESSION':
case '_REQUEST':
case '_ENV': return true; break;
default: return false; break;
}
}