分析 ecshop 里的$GLOBALS

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家

搞ec二次开发 或研究ec的一些网友 经常在论坛里提到 $GLOBALS['db']; $GLOBALS['ecs'];在那定义的等帖子。 下来就$GLOBALS我说一点:


想搞明白的朋友 执行 这段代码
  1. <?php

  2. $xaphp = '西安php服务中心';

  3. echo $GLOBALS['xaphp'];

  4. ?>
复制代码


浏览器当然会打印出西安php服务中心这就是 $GLOBALS的作用“就像大部份的结构化程序,有所谓的全局变量与局部变量,PHP在这方面也是有相同的处理方式。
在PHP的程序执行时,系统会在内存中保留一块全局变量的区域。实际运用时,可以透过$GLOBALS["变量名称"]将需要的变量取出。在用户自定的函数或程序中,就可以用$GLOBALS数组取出需要的变量


在ec里 大家打开 init.php 会看到
  1. $db = new cls_mysql($db_host, $db_user, $db_pass, $db_name);
复制代码
定义了这样的类顾名思义 $GLOBALS['db']

以上观点是我个人的理解。

回答:
楼主哥哥确实像一个搞二次开发的。
说的总是头头是道,不过好像这个用处不大啊。
不懂怎么用。

谢谢,这是一些基础知识。



谢谢解释!EC内,我要自定义一些全局变量,是在哪个文件中添加,具体语法是如何的?

4# grn2001
includes/init.php

includes/lib_commen.php 的 load_config()
/**
* 载入配置信息
*
* @accesspublic
* @returnarray
*/
function load_config()

学习基础知识 :)

不错 可以普及下php的基础知识

原来如此,我再去研究一下。
Thank you!

这个一般用来干啥啊?

这个收藏了。。

关于php的很多全局变量都不是很懂

11# sammi828474 网上资料很多 你看一下

齐老师,支持你..



学习齐老师的帖子顺便记录下自己的体会:
开始错误的以为在A页面定义$GLOBALS['db_host']="localhost";
就可以在B页面直接echo出来值
如果想在B页面echo出$GLOBALS['db_host']的值,B页面必须要引用A页面文件
全局变量是指可以在程序的任何范围内访问的,比如$_POST, $_GET 等,在函数内部可以访问,在函数外部也可以访问,但普通的函数外定义的变量是不可以在函数内部访问的。比如:
$GLOBALS['testGlobal'] = '123';
$testVar = 'abc';
function showVar()
{
echo $GLOBALS['testGlobal']; //此行可以显示123,因为这是个全局变量
echo $testVar; //此行并不能显示abc,因为函数内部无法访问$testVar这个普通变量。
}
showVar(); //显示 123
全局变量并不是指变量可以跨文件访问,跨文件访问PHP是做不到的,要访问另一个文件中定义的变量只能先包含那个文件
那么如果也要显示abc这个值呢
可以这样改动
function showVar()
{
echo $GLOBALS['testGlobal']; //此行可以显示123,因为这是个全局变量
echo $testVar; //此行并不能显示abc,因为函数内部无法访问$testVar这个普通变量。
echo $GLOBALS['testVar'];
}
这样就可以显示abc了``
我的理解就是这个超级全局变量 是不是 在类或函数中才能体现他的‘价值’?

值得学习