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 相关文章推荐
实现树状结构的两种方法
Oct 09 PHP
php+mysql 实现身份验证代码
Mar 24 PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
php中数组首字符过滤功能代码
Jul 31 PHP
PHP中文编码小技巧
Dec 25 PHP
php采集内容中带有图片地址的远程图片并保存的方法
Jan 03 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
Mar 03 PHP
Symfony2函数用法实例分析
Mar 18 PHP
完美利用Yii2微信后台开发的系列总结
Jul 18 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
Oct 08 PHP
PHP二维数组去重实例分析
Nov 18 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 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
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
PHP 批量删除数据的方法分析
2009/10/30 PHP
PHP 压缩文件夹的类代码
2009/11/05 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
JavaScript对象、属性、事件手册集合方便查询
2010/07/04 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
JavaScript数组前面插入元素的方法
2015/04/06 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
使用jsonp实现跨域获取数据实例讲解
2016/12/25 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
2017/12/09 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
转让协议书范本
2014/04/15 职场文书
《会走路的树》教后反思
2014/04/19 职场文书
企业领导对照检查材料
2014/08/20 职场文书
企业法人任命书
2015/09/21 职场文书