发布于:
2011年05月04日
平常程序的config.inc.php文件的预定义变量都会写成define形式。如:
define(“VAR”,”Var was defined”);
某天突发奇想觉得这样写不够酷,把config.inc.php文件全部改成:
$var = “Var was defined”;
这样的形式,还费大劲替换程序文件里面的预定义变量写法。
是的,你可以想到悲催的结果了。
因为define 变量与常规变量作用域不同:define 可作用域所有区域,包括函数和类里面。常规变量在函数和类里面作用必须要用global 重新声明一次。显然我没有认识到这一点。
所以我现在面临两个选择:
1. 将所有变量改重新回来
2. 在函数内部使用$GLOBALS数组,如:$GLOBALS[‘var’]
所以像$GLOBALS数组就属于Super globals变量,不受任何变量作用域限制。PHP中Super globals变量有下面这些:
$GLOBALS
$_SERVER
$_GET
$_POST
$_COOKIE
$_FILES
$_ENV
$_REQUEST
$_SESSION