php常量详细解析


Posted in PHP onOctober 27, 2015

一、常量

常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变(除了所谓的魔术常量,它们其实不是常量)。常量默认为大小写敏感。按照惯例常量标识符总是大写的。
常量名和其它任何 PHP 标签遵循同样的命名规则。合法的常量名以字母或下划线开始,后面跟着任何字母,数字或下划线。用正则表达式是这样表达的
[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* (注: 在这里,字母是 a-z,A-Z,以及从 127 到 255(0x7f-0xff)的 ASCII 字符)
和super globals 一样,常量的范围是全局的。不用管作用域就可以在脚本的任何地方访问常量。有关作用得更多信息请阅读手册中的变量范围。

二、语法
可以用 define() 函数来定义常量。一个常量一旦被定义,在程序执行的过程中就不能再改变或者取消定义。
常量只能包含标量数据(boolean,integer,float 和 string)。
可以简单的通过指定其名字来取得常量的值,不要在常量前面加上 $ 符号。如果常量名是动态的,也可以用函数 constant() 来读取常量的值。用get_defined_constants() 可以获得所有已定义的常量列表。
注: 常量和(全局)变量在不同的名字空间中。这意味着例如 TRUE 和 $TRUE 是不同的。
如果使用了一个未定义的常量,PHP 假定你想要的是该常量本身的名字,如同你用字符串调用它一样(CONSTANT 对应 "CONSTANT")。此时将发出一个 E_NOTICE 级的错误。参见手册中为什么 $foo[bar] 是错误的(除非你事先用 define() 将 bar 定义为一个常量)。如果你只想检查是否定义了某常量,用 defined() 函数。

三、常量和变量的不同
常量前面没有美元符号($);
常量只能用 define() 函数定义,而不能通过赋值语句;
常量可以不用理会变量范围的规则而在任何地方定义和访问;
常量一旦定义就不能被重新定义或者取消定义;
常量的值只能是标量。
常量定义示例:

<?php 
define("CONSTANT", "Hello world."); 
echo CONSTANT; // outputs "Hello world." 
echo Constant; // outputs "Constant" and issues a notice. 
?>

四、预定义常量
PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。
有四个魔术常量根据它们使用的位置而改变。例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:
几个 PHP 的“魔术常量”
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。
__FUNCTION__ 函数名称 (这是 PHP 4.3.0 新加的)。
__CLASS__ 类的名称(这是 PHP 4.3.0 新加的)。
__METHOD__ 类的方法名(这是 PHP 5.0.0 新加的)。

以上就是详细介绍了php常量的基本内容,希望对大家的学习有所帮助。

PHP 相关文章推荐
ASP和PHP都是可以删除自身的
Apr 09 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
May 18 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
Feb 04 PHP
PHP不用第三变量交换2个变量的值的解决方法
Jun 02 PHP
解析PHP跨站刷票的实现代码
Jun 18 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
Mar 17 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
Nov 25 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
Jan 19 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
Apr 02 PHP
PHP模板引擎Smarty自定义变量调解器用法
Apr 11 PHP
thinkPHP线上自动加载异常与修复方法实例分析
Dec 01 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
Feb 08 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
Oct 27 #PHP
PHP的APC模块实现上传进度条
Oct 27 #PHP
php+ajax制作无刷新留言板
Oct 27 #PHP
一个完整的php文件上传类实例讲解
Oct 27 #PHP
php邮件发送的两种方式
Apr 28 #PHP
php语言中使用json的技巧及json的实现代码详解
Oct 27 #PHP
php+ajax实现无刷新的新闻留言系统
Dec 21 #PHP
You might like
php学习 函数 课件
2008/06/15 PHP
php setcookie函数的参数说明及其用法
2014/04/20 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
2007/04/20 Javascript
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
jquery中动态效果小结
2010/12/16 Javascript
JQuery 中几个类选择器的简单使用介绍
2013/03/14 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
JavaScript的各种常见函数定义方法
2014/09/16 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
2016/01/08 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
JS hashMap实例详解
2016/05/26 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
使用python开发vim插件及心得分享
2014/11/04 Python
Python利用heapq实现一个优先级队列的方法
2019/02/03 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
python中setuptools的作用是什么
2020/06/19 Python
python中reload重载实例用法
2020/12/15 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
高校辅导员推荐信范文
2013/12/25 职场文书
接受捐赠答谢词
2014/01/27 职场文书
小学见习报告
2014/10/31 职场文书
学术会议通知
2015/04/15 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
考试后的感想
2015/08/07 职场文书
导游词之西安骊山
2019/12/03 职场文书
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL