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 相关文章推荐
十天学会php之第九天
Oct 09 PHP
BBS(php &amp; mysql)完整版(七)
Oct 09 PHP
php 全文搜索和替换的实现代码
Jul 29 PHP
PHP 内存缓存加速功能memcached安装与用法
Sep 03 PHP
ThinkPHP模板Switch标签用法示例
Jun 30 PHP
PHP使用range协议实现输出文件断点续传代码实例
Jul 04 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
Nov 18 PHP
PHP使用反射机制实现查找类和方法的所在位置
Apr 22 PHP
Yii2单元测试用法示例
Nov 12 PHP
CakePHP框架Model函数定义方法示例
Aug 04 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
Sep 13 PHP
Laravel框架集合用法实例浅析
May 14 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源码之 ext/mysql扩展部分
2009/07/17 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
syntaxhighlighter 使用方法
2007/07/02 Javascript
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
原生js实现瀑布流效果
2020/03/09 Javascript
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
pycharm修改file type方式
2019/11/19 Python
一个C/C++编程面试题
2013/11/10 面试题
软件缺陷的分类都有哪些
2014/08/22 面试题
服装公司总经理岗位职责
2013/11/30 职场文书
“学雷锋活动月”总结
2014/03/09 职场文书
毕业寄语大全
2014/04/09 职场文书
中药学自荐信
2014/06/15 职场文书
大学同学会活动方案
2014/08/20 职场文书
设备收款委托书范本
2014/10/02 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
2015年大学生工作总结
2015/04/21 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python