开发者学堂课程【PHP 基础入门课程(下):超全局作用域】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/710/detail/12634
超全局作用域
内容介绍:
一、超全局作用域(超全局变量)概念
二、示例
三、小结
一、超全局作用域(超全局变量)概念
超全局作用域:即脚本中任意位置(局部全局都可以访问)
超全局变量:系统定义的预定义变量
说明:
(1)超全局变量不受作用域限制,都可以访问
(2)全局变量都会被收纳在$GLOBALS 中(可以用 GLOBALS 访问全局变量)
(3)可以利用超全局变量来保存数据,让数据不受作用域限制
二、示例
1、超全局变量
#定义局部变量
$a = 100;
ecoh’<pre>’;
var_dump($GLOBALS);
运行结果:
# 里面包含的东西很多,有_GET 表示 get 的所有东西都会包含,这两个值是我们自己定义的,这即全局变量会自动被吸纳在$GLOBALS 超全局变量里面。
function display (){
var_dump($GLOBALS);
echo $GLOBALS[‘a’];
}
display();
#打印很多,包括$a= 100
运行结果:
#输出100 全局变量因为超全局作用域和超全局变量的关系变得不再受限制。
2、将局部变量保存到$GLOBALS 中,也可以任意访问
#先尝试直接定义
$GLOBALS[‘b’] = 1000;
#刷新后没效果
}
display();
var_dump($GLOBALS);
运行结果:
#刷新后有效果,里面有 a 和 b。随着函数在此地方的调用开始以及调用结束,系统内部定义的局部变量就会被消失。此时不是在定义局部变量,只是给超全局变量增加了一个元素而已(相当于定义了一个全局变量,一般不建议这么做)
function display(){
#添加超全局作用域数据
$GLOBALS[‘a’]=100;
}
#必须先运行函数:执行内部代码才有效
display();
echo $GLOBALS[‘a’];
#输出100
运行结果:
三、小结
1、超全局作用域是 PHP 脚本任意位置
2、超全局变量是系统定义,开发者一般只用来访问数据(不建议通过超全局变量来让变量跨域)
3、$GLOBALS 会自动包含全局变量,追加的元素系统也会当做全局变量,同时还有以下超全局变量:
$_GET:自动接收 GET 提交的数据·
$_POST:自动接收 POST 提交的数据
$_COOKE:自动接收 cookie 数据
$_FILES:自动接收文件上传的数据
$_GLOBALS(自己包含自己)