请问杜江老师,关于您书中的一个问题
时间:2007-12-07
来源:互联网
您书中提到过,位于书本的P63:“程序中使用global关键字或者使用$GLOBALS[]数组来使一个变量在整个应用程序内具备全局属性”,我理解也就是整个web应用下具备全局属性,但是有个网站提到的确是这样:“global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件”,到底应该如何理解,望指教,那个网站网址是http://cornus.bloghome.cn/posts/79410.html
[ 本帖最后由 canboy365 于 2007-12-7 07:59 编辑 ]
[ 本帖最后由 canboy365 于 2007-12-7 07:59 编辑 ]
作者: canboy365 发布时间: 2007-12-07
您可以参见书中2.2.6 的描述。
下面详细描述该问题:
变量范围(Scope)是一个微妙也是非常重要的概念。
由于在PHP4.2后,php.ini中已经默认把register_globals的选项关闭(性能优化和安全),因此我们可以使用global和$GLOBALS[]数组(你可以任选其一使用),来指定一个变量或对象是否具有全局域的属性。
作用域是针对脚本的,当一个PHP脚本结束运行后,我们写的自定义变量将被系统回收删除,另一个脚本运行后,将无法使用和访问脚本所产生的变量值,因此如果要使用上一个脚本的中变量,首先请使用包含语句(include/include_once/require/require_once),然后使用这两个关键字来声明某个变量为全局作用域。
另外,即便是同一个脚本中,当有你自定义的函数时,要使用外部定义的变量时,并想执行后影响外部自定义变量的值,也可以使用global和GLOBALS[]数组来声明(其实这与包含的意义是相同的,区别就是代码是否在一个文件罢了)。
下面举例说明:
例1 g1.php:
[ 本帖最后由 phpcast 于 2007-12-7 18:07 编辑 ]
下面详细描述该问题:
变量范围(Scope)是一个微妙也是非常重要的概念。
由于在PHP4.2后,php.ini中已经默认把register_globals的选项关闭(性能优化和安全),因此我们可以使用global和$GLOBALS[]数组(你可以任选其一使用),来指定一个变量或对象是否具有全局域的属性。
作用域是针对脚本的,当一个PHP脚本结束运行后,我们写的自定义变量将被系统回收删除,另一个脚本运行后,将无法使用和访问脚本所产生的变量值,因此如果要使用上一个脚本的中变量,首先请使用包含语句(include/include_once/require/require_once),然后使用这两个关键字来声明某个变量为全局作用域。
另外,即便是同一个脚本中,当有你自定义的函数时,要使用外部定义的变量时,并想执行后影响外部自定义变量的值,也可以使用global和GLOBALS[]数组来声明(其实这与包含的意义是相同的,区别就是代码是否在一个文件罢了)。
下面举例说明:
例1 g1.php:
复制PHP内容到剪贴板
<?php
//初始化两个变量
$a = 1;
$b = 2;
?>
例2 g2.php
PHP代码:
<?php
//初始化两个变量
$a = 1;
$b = 2;
?>
复制PHP内容到剪贴板
<?php
require_once('g1.php'); //引用脚本
function cal(){
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
cal();
echo $b; //结果为3
?>
在实际开发中,比如我们把数据库连接对象声明为一个全局对象,如global $dbo,这样在脚本或类中调用对象不需要再使用new关键字进行实例化多次,从而节约了系统的开销与增强了性能,希望这些能对你有帮助。PHP代码:
<?php
require_once('g1.php'); //引用脚本
function cal(){
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
cal();
echo $b; //结果为3
?>
[ 本帖最后由 phpcast 于 2007-12-7 18:07 编辑 ]
作者: phpcast 发布时间: 2007-12-07
似乎懂了,呵呵,您所说的全局作用域的全局是指针对整个Web应用上下文来说的吧?
作者: canboy365 发布时间: 2007-12-07
全局作用域指的是一个脚本,该脚本同时包含了我们使用include和require引用的脚本代码,而使用$GLOBALS数组和global关键字就可以在脚本的函数或方法中使用共通的变量和对象。
作者: phpcast 发布时间: 2007-12-10
OK~~ 明白了,谢谢杜江老师,哈哈, 以后还会陆续有问题请您解答哟~ 望您不怕麻烦
作者: canboy365 发布时间: 2007-12-11
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28