PHP学习:PHP超全局变量(Superglobal)$GLOBALS的介绍以及和global的区别

简介:

PHP超全局变量有很多,如下的都属于超全局变量Superglobal

$GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV。

官方说明:

$GLOBALS — 引用全局作用域中可用的全部变量。

一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

即出现过的全局变量,就可以通过$GLOBALS这个数组取得。

PHP生命周期中,定义在函数体外部的所谓全局变量,函数内部是不能直接获得的。

 

 
  1. <?php  
  2. $foo = "Example content";  
  3. test();  
  4. function test() {  
  5.     $foo = "local variable";  
  6.     echo '$foo in current scope: ' . $foo . "<br>";  
  7.     echo '$foo in global scope: ' . $GLOBALS["foo"] . "<br>";  

 

如上的例子,要访问外部的$foo必须使用 $GLOBALS数组。对于通过include文件进来的外部全局变量也适用。

php中global也有这样的功能。它和$GLOBALS的区别在于。

global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量。

$GLOBALS[]确确实实调用是外部的变量,函数内外会始终保持一致!

对于类中的成员变量,类中函数必须使用$this->的方式访问,不能用$GLOBALS方式:

 
  1. <?php  
  2. test{  
  3.     public $count=0;  
  4.     public function add(){  
  5.         $this->count=$this->count+2;  
  6.         return $this->count;  
  7.     }  
  8. }  
  9. $a=new test();  
  10. echo $a->add();  
  11. ?> 

而不能直接如下写法

$count=$count+2;

return $count;

 
  1. <?php  
  2. $foo = "Example content";  
  3. test();  
  4. function test() {  
  5. unset( $GLOBALS["foo"] );  
  6. }  
  7. echo $foo

上述代码运行,会报错:Undefined variable: foo。说明$GLOBALS["foo"]就是外面的$foo本身。

 
  1. <?php  
  2. $foo = "Example content";  
  3. test();  
  4. function test() {  
  5. global $foo;  
  6. unset($foo);  
  7. }  
  8. echo $foo

上述代码改成了global方式,运行后,成功打印出Example content

说明unset并未真正释放掉$foo变量。













本文转自cnn23711151CTO博客,原文链接:http://blog.51cto.com/cnn237111/1043302 ,如需转载请自行联系原作者



相关文章
|
4月前
|
PHP
PHP public、protected、private、static、abstract、final、interface、implements 区别对比
PHP public、protected、private、static、abstract、final、interface、implements 区别对比
27 0
|
4月前
|
PHP 调度
PHP CGI、FastCGI、PHP-FPM、PHP-CGI 区别
PHP CGI、FastCGI、PHP-FPM、PHP-CGI 区别
28 5
|
4月前
|
PHP
php中elseif 和else if的区别
@(黑线)以前貌似看到if这里,就直接跳了,可是今天再读文档,又发现了点东西... @(乖)可能你已经知道了php存在elseif 和else if,保留了c的风格。
23 0
|
4月前
|
前端开发 PHP 数据安全/隐私保护
【PHP学习】—利用ajax原理实现密码修改功能(九)
【PHP学习】—利用ajax原理实现密码修改功能(九)
|
4月前
|
前端开发 JavaScript PHP
【PHP学习】—利用ajax原理实现登录功能(八)
【PHP学习】—利用ajax原理实现登录功能(八)
|
4月前
|
PHP 数据库
【PHP学习】—PHP连接数据库实现表单页面的验证功能(七)
【PHP学习】—PHP连接数据库实现表单页面的验证功能(七)
|
4月前
|
数据库连接 PHP 数据库
【PHP学习】—PHP连接数据库(六)
【PHP学习】—PHP连接数据库(六)
|
4月前
|
前端开发 PHP
【PHP学习】—get请求传递参数(五)
【PHP学习】—get请求传递参数(五)