【发布时间】:2011-08-01 05:01:17
【问题描述】:
我有这个 PHP 包含文件,其中包含我将使用的所有变量。如何在函数的另一个文件中使用所有这些变量,而不在该函数中再次将它们声明为全局变量?
【问题讨论】:
标签: php variables scope global
我有这个 PHP 包含文件,其中包含我将使用的所有变量。如何在函数的另一个文件中使用所有这些变量,而不在该函数中再次将它们声明为全局变量?
【问题讨论】:
标签: php variables scope global
一个函数不能访问外部变量而不包括它们或将它们声明为全局变量或从全局变量中获取它们。在过去,我创建了一个数组和易于阅读的变量。然后我引用数组变量并且必须按名称访问变量。
【讨论】:
您应该将它们作为参数传递给函数。如果有很多人要这样做,请考虑使用对象而不仅仅是函数,然后在主文件中实例化对象的实例。或者正如 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;
}
}
【讨论】: