浅析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同时支持GIF、png、JPEG
Oct 09 PHP
使用php重新实现PHP脚本引擎内置函数
Mar 06 PHP
PHP通过正则表达式下载图片到本地的实现代码
Sep 19 PHP
php方法调用模式与函数调用模式简例
Sep 20 PHP
php实现MD5加密16位(不要默认的32位)
Aug 12 PHP
PHP如何利用P3P实现跨域
Aug 24 PHP
PHP模板引擎Smarty中的保留变量用法分析
Apr 11 PHP
php微信开发之百度天气预报
Nov 18 PHP
PHP中Laravel 关联查询返回错误id的解决方法
Apr 01 PHP
PhpStorm配置Xdebug调试的方法步骤
Feb 02 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 PHP
深入解析PHP底层机制及相关原理
Dec 11 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学习资源和链接.
2006/12/05 PHP
PHP实现时间日期友好显示实现代码
2019/09/08 PHP
改写一个简单的菜单 弹性大小
2010/12/02 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
2014/09/23 Javascript
AngularJS语法详解
2015/01/23 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
原生js实现自由拖拽弹窗代码demo
2016/06/29 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
使用Vue-Router 2实现路由功能实例详解
2017/11/14 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
javascript标准库(js的标准内置对象)总结
2018/05/26 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
python列表与元组详解实例
2013/11/01 Python
Python生成随机数组的方法小结
2017/04/15 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
python中实现数组和列表读取一列的方法
2018/04/03 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
基于python使用tibco ems代码实例
2019/12/20 Python
python如何保存文本文件
2020/06/07 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
python如何提升爬虫效率
2020/09/27 Python
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
strlen的几种不同实现方法
2013/05/31 面试题
Servlet面试题库
2015/07/18 面试题
中学运动会广播稿
2014/01/19 职场文书
公司财务管理制度
2015/08/04 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
Java数组与堆栈相关知识总结
2021/06/29 Java/Android