被PHP变量作用域折腾了一下

发布于: 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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

浙ICP备18056264号-1