浅析php中常量,变量的作用域和生存周期


Posted in PHP onAugust 10, 2013

在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类型的数据。

PHP 相关文章推荐
15种PHP Encoder的比较
Apr 17 PHP
PHP 在线翻译函数代码
May 07 PHP
PHP 分页原理分析,大家可以看看
Dec 21 PHP
PHP 日志缩略名的创建函数代码
May 26 PHP
php数据库抽象层 PDO
May 07 PHP
微信支付开发教程(一)微信支付URL配置
May 28 PHP
PHP实现定时执行任务的方法
Oct 05 PHP
php中异常处理方法小结
Jan 09 PHP
学习php设计模式 php实现门面模式(Facade)
Dec 07 PHP
PHP命名空间namespace的定义方法详解
Mar 29 PHP
PHP5.6新增加的可变函数参数用法分析
Aug 25 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
浅析linux下apache服务器的配置和管理
Aug 10 #PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 #PHP
php 删除目录下N分钟前创建的所有文件的实现代码
Aug 10 #PHP
php中如何判断一个网页请求是ajax请求还是普通请求
Aug 10 #PHP
php一些错误处理的方法与技巧总结
Aug 10 #PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 #PHP
php对csv文件的读取,写入,输出下载操作详解
Aug 10 #PHP
You might like
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
php类常量用法实例分析
2015/07/09 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
2020/04/23 PHP
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
深入理解事件冒泡(Bubble)和事件捕捉(capture)
2016/05/28 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
原生JS查找元素的方法(推荐)
2016/11/22 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
python 中的列表解析和生成表达式
2011/03/10 Python
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
Python创建普通菜单示例【基于win32ui模块】
2018/05/09 Python
Django ORM filter() 的运用详解
2020/05/14 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
super()与this()的区别
2016/01/17 面试题
产品工艺师的岗位职责
2013/11/15 职场文书
家电业务员岗位职责
2014/03/10 职场文书
医院信息公开实施方案
2014/05/09 职场文书
环保志愿者活动方案
2014/08/14 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL
Python matplotlib多个子图绘制整合
2022/04/13 Python