浅析php中常量,变量的作用域和生存周期
2016-07-09 15:32
459 查看
在PHP脚本中变量主要有:内置超级全局变量,一般的变量,常量,全局变量,静态变量等等,我们在使用它们的时候除了要正确地知道它们的语法以外,更重要的是,我们要知道它们在本质上的区别与联系—即它们的作用域的问题。
1.内置超级全局变量可以在脚本的任何地方使用和可见。即是说,如果我们在一个PHP页面中改变了其中的一个值,那么在其他PHP页面中使用时,它的值也会发生改变。
2.常量一旦被声明将可以在全局可见,也就是说,它们可以函数内外使用,但是这仅仅限于一个页面之中(包含我们通过include和include_once)包含进来的PHP脚本,但是在其他的页面之中就不能使用了。
3.在一个脚本中声明的全局变量在整个脚本中是可见的,但不是在函数内部,在函数内部的变量如果与全局变量名称相同,以函数内部的变量为准。
4.函数内部使用的变量声明为全局变量时,其名称要与全局变量的名称一致,在这样的情况下,我们就可以在函数中使用函数外部的全局变量了,这样就可以避免上一种因为函数内部的变量与外部的全局变量名称相同而覆盖了外部变量这样的情况。
5.在函数内部创建并声明为静态的变量无法在函数外部可见,但是可以在函数的多次执行过程中保持该值,最常见的情况就是在函数的递归执行的过程之中。
6.在函数内部创建的变量对函数来说是本地的,而当函数终止时,该变量也就不存在了。
超级全局变量的完整列表如下:
1.$GOBALS 所有全局变量数组
2.$_SERVER 服务器环境变量数组
3.$_POST 通过POST方法传递给该脚本的变量数组
4.$_GET 通过GET方法传递给该脚本的变量数组
5.$_COOKIE cookie变量数组
6.$_FILES 与文件上传相关的变量数组
7.$ENV 环境变量数组
8.$_REQUEST 所有用户输入的变量数组包括$_GET $_POST $_COOKIE 所包含的输入内容
9.$_SESSION 会话变量数组
我们要注意的是:变量和常量另一个重要的差异是:常量只可以定义boolean(布尔型),integer(整型),float(浮点型) 和 string(字符串型)数据,但不能定义 resource类型的数据。
1.内置超级全局变量可以在脚本的任何地方使用和可见。即是说,如果我们在一个PHP页面中改变了其中的一个值,那么在其他PHP页面中使用时,它的值也会发生改变。
2.常量一旦被声明将可以在全局可见,也就是说,它们可以函数内外使用,但是这仅仅限于一个页面之中(包含我们通过include和include_once)包含进来的PHP脚本,但是在其他的页面之中就不能使用了。
3.在一个脚本中声明的全局变量在整个脚本中是可见的,但不是在函数内部,在函数内部的变量如果与全局变量名称相同,以函数内部的变量为准。
4.函数内部使用的变量声明为全局变量时,其名称要与全局变量的名称一致,在这样的情况下,我们就可以在函数中使用函数外部的全局变量了,这样就可以避免上一种因为函数内部的变量与外部的全局变量名称相同而覆盖了外部变量这样的情况。
5.在函数内部创建并声明为静态的变量无法在函数外部可见,但是可以在函数的多次执行过程中保持该值,最常见的情况就是在函数的递归执行的过程之中。
6.在函数内部创建的变量对函数来说是本地的,而当函数终止时,该变量也就不存在了。
超级全局变量的完整列表如下:
1.$GOBALS 所有全局变量数组
2.$_SERVER 服务器环境变量数组
3.$_POST 通过POST方法传递给该脚本的变量数组
4.$_GET 通过GET方法传递给该脚本的变量数组
5.$_COOKIE cookie变量数组
6.$_FILES 与文件上传相关的变量数组
7.$ENV 环境变量数组
8.$_REQUEST 所有用户输入的变量数组包括$_GET $_POST $_COOKIE 所包含的输入内容
9.$_SESSION 会话变量数组
我们要注意的是:变量和常量另一个重要的差异是:常量只可以定义boolean(布尔型),integer(整型),float(浮点型) 和 string(字符串型)数据,但不能定义 resource类型的数据。
相关文章推荐
- 什么是CGI、FastCGI、php-cgi、php-fpm?
- phpexcel 字符串转码
- PHP中设置时区方法小结
- Thinkphp框架的源码通读2——核心Think类从开始到加载方法
- Thinkphp框架的源码通读1
- SFTP文件读取工具类
- php生成随机数的三种方法
- InputStreamReader和OutputStreamWriter的用法
- PHP之array
- php示例代码之empty函数
- php示例代码之读取文件
- PHP isset() 检测变量是否设置
- ContentProvider
- ThinkPHP5开发(二)实现带后台验证的注册功能
- 大文件下载的实现
- PHP函数与问题笔记
- 解读PHP数组排序
- PHP ob系列函数详解
- 树莓派debian配置lamp【解决apache不显示php】
- THINKPHP中使用$this->ajaxReturn与模板页进行AJAX交互使用方法