浅析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 相关文章推荐
使用字符串函数输出整数化的PHP版本号
Oct 09 PHP
收集的PHP中与数组相关的函数
Mar 22 PHP
Uchome1.2 1.5 代码学习 common.php
Apr 24 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
PHP多线程类及用法实例
Dec 03 PHP
学习php设计模式 php实现单例模式(singleton)
Dec 07 PHP
PHP设置头信息及取得返回头信息的方法
Jan 25 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 PHP
php无限级分类实现方法分析
Oct 19 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
Nov 22 PHP
CodeIgniter框架常见用法工作总结
Mar 16 PHP
PHP实现防盗链的方法分析
Jul 25 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
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
dedecms系统的广告设置代码 基础版本
2010/04/09 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
学习php设计模式 php实现策略模式(strategy)
2015/12/07 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
简单实用的js调试logger组件实现代码
2010/11/20 Javascript
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
Node.js中使用mongoskin操作mongoDB实例
2014/09/28 Javascript
JS实现的不规则TAB选项卡效果代码
2015/09/18 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
2018/12/10 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
python程序控制NAO机器人行走
2019/04/29 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
css3加js做一个简单的3D行星运转效果实例代码
2017/01/18 HTML / CSS
师范大学生求职信
2014/06/13 职场文书
目标责任书格式
2014/07/28 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
2014年度个人总结范文
2015/03/09 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
搞笑结婚保证书
2015/05/08 职场文书
详解Python类和对象内容
2021/06/22 Python