【web 开发基础】PHP 中的预定义数组 (46)
前言
从 PHP4.1.0 开始,PHP 提供了一套附加的预定义数组,这些数组变量包含了来自 web 服务器,客户端、运行环境和用户输入的数据。这写数组非常特别,通常被称为自动全局变量后者超全局变量,他们具有以下几个特性:
其实质就是一种特殊的数组,操作方式和普通数组没有区别。
不用去声明他们,在每个 PHP 脚本中默认存在,因为 PHP 中用户不用自定义它们,所以在自定义变量时应避免和预定义的全局变量同名。
它们在全局范围内自动生效,即在函数中直接就可以使用,而且不需要使用 global 关键字访问它们。
预定义的超全局数组变量说明
下面我们逐一简单了解 PHP 中这些预定义的超全局数组的用途
$_SERVER:变量由 Web 服务器设定或者直接与当前脚本的执行环境关联
$_ENV:执行环境提交至脚本的变量
$_GET:经由 URL 请求提交至脚本的变量
$_POST:经由 HTTP POST 方法提交至脚本变量
$_REQUESRT:经由 GET、POST 和 Cookie 机制提交至脚本的变量,因此该数组并不值得信任
$_FILES:经由 HTTP POST 文件上传而提交至脚本的变量
$_COOKIE:经由 HTTP Cookie 方法提交至脚本的变量
$_SESSION:当前注册给脚本会话的变量
$GLOBALS:包含一个引用指向每个当前脚本的全局范围内有效的变量。该数组的键名为全局变量名称
用户可以直接利用上面列举到的超全局数组来访问预定义变量。而且,你也会注意到旧的预定义数组(HTTP_*_VARS)仍旧存在,其中“*”根据不同的变量类别使用不同的内容。比如:$HTTP_GET_VARS 类似于 $_GET,$_HTTP_SERVER_VARS 类似于 $_SERVER 等等。这种长格式的旧数组依然有效,但是反对使用。自 PHP5 起,长格式的 PHP 预定义变量可以通过在 php.ini 文件中设置 register_long_arrays 选项来屏蔽。另外,在 PHP 脚本中,所有这些超全局数组相似,都有简短风格,可以以 PHP 变量的形式访问使用每个超全局数组的元素,其中 PHP 变量名称必须与超全局数组下标名称一致,使用非常方便。比如:$_POST['name']可以直接使用 $name 进行操作。但是需要在 PHP 的配置文件 php.ini 中,将 register_globals 配置选项设置为 on。在默认情况下,该选项默认的设定值和 PHP 的版本相关。在 PHP4.2.0 以后所有版本中,该配置的选项默认值为 off。也就是默认关闭的。以前的版本中默认值设置为 on 是开启的,但是现在基本没有人使用那么久远的老古董吧。O(∩_∩)O 哈哈~。这个风格可能会使你遇到代码有不安全的错误,因此不推荐使用这种简短风格,要确保配置文件中的 register_globals 选项是关闭状态。关于些超全局数组变量的具体用法,我们后续详细逐个介绍。
版权声明: 本文为 InfoQ 作者【迷彩】的原创文章。
原文链接:【http://xie.infoq.cn/article/35f2221d1ca313fcf9c5af19e】。文章转载请联系作者。
评论