浅析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 工厂模式使用方法
May 18 PHP
php INI配置文件的解析实现分析
Jan 04 PHP
PHP的加密方式及原理
Jun 14 PHP
如何在php中正确的使用json
Aug 06 PHP
PHP Switch 语句之学习笔记
Sep 21 PHP
ThinkPHP框架实现session跨域问题的解决方法
Jul 01 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
浅析php-fpm静态和动态执行方式的比较
Nov 09 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
Thinkphp5.0框架视图view的循环标签用法示例
Oct 12 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
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
2017/11/21 PHP
php实现微信支付之现金红包
2018/05/30 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
JavaScript事件学习小结(一)事件流
2016/06/09 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
简单实现js无缝滚动效果
2017/02/05 Javascript
jQuery层级选择器_动力节点节点Java学院整理
2017/07/04 jQuery
JavaScript+H5实现微信摇一摇功能
2018/05/23 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
python 算法 排序实现快速排序
2012/06/05 Python
python中关于日期时间处理的问答集锦
2013/03/08 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
python用插值法绘制平滑曲线
2021/02/19 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
Java基础知识面试题
2014/03/25 面试题
测试工程师岗位职责
2013/11/28 职场文书
销售员岗位职责范本
2014/02/03 职场文书
党员教师工作决心书
2014/03/13 职场文书
我爱家乡演讲稿
2014/09/12 职场文书
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
商业计划书格式、范文
2019/03/21 职场文书
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android