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 ,如需转载请自行联系原作者



相关文章
|
1月前
|
SQL 关系型数据库 MySQL
如何学习PHP编程?
【10月更文挑战第2天】如何学习PHP编程?
37 9
ly~
|
2月前
|
安全 Java 大数据
php跟java有什么区别
PHP 和 Java 是两种常用编程语言,各有特色。PHP 语法简洁灵活,适用于快速开发中小型网站,尤其在 Web 脚本和数据库交互中表现出色。Java 则语法严谨,强类型特性使其在企业级应用、移动开发及大数据处理中更受欢迎,具备高稳定性和安全性。通过优化,PHP 性能可提升,而 Java 在大规模应用中表现更佳。总体而言,PHP 开发效率高但维护性稍差,Java 则更注重代码质量和安全性。
ly~
43 5
|
2月前
|
SQL 关系型数据库 数据库连接
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
本文介绍了PHP中PDO(PHP Data Objects)扩展的基本概念和使用方法。内容包括PDO类和PDOStatement类的介绍,PDO的简单使用,预定义占位符的使用方法,以及PDOStatement对象的使用。文章还讨论了绑定预定义占位符参数的不同形式,即bindValue和bindParam的区别。通过具体示例,展示了如何使用PDO进行数据库连接、数据查询、数据插入等操作。
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
|
2月前
|
IDE 关系型数据库 PHP
php语言学习
【9月更文挑战第1天】php语言学习
34 3
|
2月前
|
SQL 安全 IDE
如何开始学习PHP?
【9月更文挑战第1天】如何开始学习PHP?
44 1
|
4月前
|
前端开发 JavaScript 安全
|
4月前
|
存储 PHP 数据库
|
4月前
|
PHP 数据安全/隐私保护 开发者
|
2月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
2月前
|
NoSQL 关系型数据库 MySQL
不是 PHP 不行了,而是 MySQL 数据库扛不住啊
【9月更文挑战第8天】这段内容讨论了MySQL在某些场景下面临的挑战及其原因,并指出这些问题不能完全归咎于MySQL本身。高并发读写压力、数据量增长以及复杂查询和事务处理都可能导致性能瓶颈。然而,应用程序设计不合理、系统架构不佳以及其他数据库选择和优化策略不足也是重要因素。综合考虑这些方面才能有效解决性能问题,而MySQL通过不断改进和优化,仍然是许多应用场景中的可靠选择。
124 9