PHP 全局变量之Global关键字引用解读

引用PHP手册的$GLOBALS的解释:

Global 变量:$GLOBALS
注意: $GLOBALS 在 PHP 3.0.0 及以后版本中适用。

由所有已定义全局变量组成的数组。变量名就是该数组的索引。

这是一个“superglobal”,或者可以描述为自动全局变量。
也就是说上面代码中的$var1和$GLOBALS['var1']是指的同一变量,而不是2个不同的变量!

全局变量举例

 代码如下 复制代码

<?php
 $pangbu = "pangbu";
 
 function demo (){
 
  global $pangbu;
 
  echo $pangbu;
 }
 
 demo();
?>

解释

其实global $pangbu ;是$pangbu = &$_GLOBAL['pangbu ']的简写,

意思是$pangbu 是$_GLOBAL['pangbu ']的一个引用,至于引用怎么用,$pangbu 就怎么用了。
自己的一些笔记
之前一直没有搞明白 global 的用法 ,虽然会用但却一直在朦朦胧胧中糊里糊涂的,现在终于搞明白了。
.

为了了解更多Global的应用,请看下面php案例:

 代码如下 复制代码
<?php
    $url = "www.111cn.net";
    function get_url(){
     echo "The blog is".$url; //这里获取不到$url,因为它只是一个未定义的局部变量
    }
    get_url();
?>

 
上面的例子会报notice错误!

 代码如下 复制代码
<?php
 $url = "www.111cn.net";
 function get_url(){
  global $url;
  echo "The blog url is ".$url;
 }
 get_url();
?>

 
上面这样用法就是对的,在函数中声明全局变量后,任何变量的所有引用变量都会指向到全局变量!

另外有必要说一下,全局数组$GLOBALS[],用上面的例子改写下就是这样:

 代码如下 复制代码
<?php
 $url = "www.111cn.net";
 function get_url(){
  echo "The blog url is ".$GLOBALS['url'];
 }
 get_url();
?>
 

注意global声明变量不能复制,如 global $url = "www.111cn.net";  这样是错误的

时间: 2024-10-26 06:02:54

PHP 全局变量之Global关键字引用解读的相关文章

PHP源码分析之Global关键字

  闲来无事,就系统的从PHP的词法分析,语法分析,opcodes生成,执行,整个流程,详细的分析了global关键字的实现. 当你在脚本中写下:   <?php $var = "laruence"; function sample(){ global $var; } ?>   的时候,你知道PHP是怎么实现在函数作用域找到全局变量的么? 在我前面的文章中(深入理解PHP原理之Opcodes)讲过, PHP的执行,经历了如下几个阶段:   1. Scanning(Lexin

PHP 闭包获取外部变量和global关键字声明变量的区别讲解

最近在学习workerman的时候比较频繁的接触到回调函数,使用中经常会因为worker的使用方式不同,会用这两种不同的方式去调用外部的worker变量,这里就整理一下PHP闭包获取外部变量和global关键字声明变量的区别. 闭包 闭包是一个常见的概念,我们通常可以将其与回调函数配合使用,可以使代码更加简洁易读. 闭包可以 通过拷贝的方式 让函数使用父作用域中的变量.如: $global = 'hello'; $bbb = function()use($global){ echo $globa

asp入门教程:ASP applocation 全局变量与 Global.asa 文件

asp入门教程:ASP 全局变量 Global.asa 文件 Global.asa文件是一个可选文件,可以包含申报的对象,变量和方法,可以通过在每一页的ASP应用程序. -------------------------------------------------- ------------------------------ Global.asa文件 Global.asa文件是一个可选文件,可以包含申报的对象,变量和方法,可以通过在每一页的ASP应用程序.所有有效的浏览器的脚本( Java

asp.net 中C#中的global关键字用法

其实有些时候会犯一些错误,就是类名取了一个跟系统类名雷同的情况,其实这是设计上的失误,但是会出现一个情况就是没改了,那么global关键字就起到了作用. 如下代码:  代码如下 复制代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace globalFunc {     class Program     {         static void Mai

asp.net中C#的global关键字用法

如下代码:  代码如下 复制代码 using System; using System.Collections.Generic; using System.Linq; using System.Text;   namespace globalFunc {     class Program     {         static void Main(string[] args)         {             System sys = new System();          

php 全局变量global的使用方法

全局变量和"global"关键字 PHP默认定义了一些"超级全局(Superglobals)"变量,这些变量自动全局化,而且能够在 程序的任何地方中调用,比如$_GET和$ _REQUEST等等.它们通常都来自数据或者其他外部数 据,使用这些变量通常是不会产生问题的,因为他们基本上是不可写的. 但是你可以使用你自己的全局变量.使用关键字"global"你就可以把全局数据导入到一个 函数的局部范围内.如果你不明白"变量使用范围"

PHP内核探索之变量(2)-理解引用

原文:PHP内核探索之变量(2)-理解引用 本文主要内容: 引论 符号表与zval 引用原理 回到最初的问题 一.引论 很久之前写了一篇关于引用的文章,当时写的寥寥草草,很多原理都没有说清楚.最近在翻阅Derick Rethans(home: http://derickrethans.nl/ Github: https://github.com/derickr)大牛之前做的报告时,发现了一篇讲解PHP引用机制的文章,也就是这个PDF.文中从zval和符号表的角度讲解了引用计数.引用传参.引用返回

在PHP中使用全局变量【一】

    摘要     本文演示了如何恰当的在PHP中使用全局数据.主要谈及到使用"global"关键字,函数参数,单件和注册器模式四种实现全局数据的方式. 简介     即使开发一个新的大型PHP程序,你也不可避免的要使用到全局数据,因为有些数据是需要用到你的代码的不同部分的.一些常见的全局数据有:程序设定类.数据库连接类.用户资料等等.有很多方法能够使这些数据成为全局数据,其中最常用的就是使用"global"关键字申明,稍后在文章中我们会具体的讲解到.   使用&

解析在PHP中使用全局变量的几种方法_php技巧

简介即使开发一个新的大型PHP程序,你也不可避免的要使用到全局数据,因为有些数据是需要用到你的代码的不同部分的.一些常见的全局数据有:程序设定类.数据库连接类.用户资料等等.有很多方法能够使这些数据成为全局数据,其中最常用的就是使用"global"关键字申明,稍后在文章中我们会具体的讲解到.使用"global"关键字来申明全局数据的唯一缺点就是它事实上是一种非常差的编程方式,而且经常在其后导致程序中出现更大的问题,因为全局数据把你代码中原本单独的代码段都联系在一起了