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中文字母数字验证码实现代码
Apr 25 PHP
PHP5中使用DOM控制XML实现代码
May 07 PHP
php正则表达式(regar expression)
Sep 10 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
Jul 24 PHP
Laravel 5 框架入门(四)完结篇
Apr 09 PHP
php实现的mongodb操作类
May 28 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
Jan 07 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 PHP
PHP的PDO预定义常量讲解
Jan 24 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
Aug 27 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
Sep 13 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脚本并取得参数的方法
2016/01/25 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
Jquery ui css framework
2010/06/28 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
2011/11/14 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
vue-router源码之history类的浅析
2019/05/21 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
python统计文本文件内单词数量的方法
2015/05/30 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
理解python中生成器用法
2017/12/20 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
python文本数据相似度的度量
2018/03/12 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019/09/24 Python
pandas 对group进行聚合的例子
2019/12/27 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
Julep官网:美容产品和指甲油
2017/02/25 全球购物
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
班级口号大全
2014/06/09 职场文书
辞职信标准格式
2015/02/27 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
python基础之文件操作
2021/10/24 Python
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android