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 验证码制作(网树注释思想)
Jul 20 PHP
将一维或多维的数组连接成一个字符串的php代码
Aug 08 PHP
PHP __autoload()方法真的影响性能吗?
Mar 30 PHP
php中实现获取随机数组列表的自定义函数
Apr 02 PHP
php实现通过ftp上传文件
Jun 19 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
Sep 21 PHP
php实现支付宝当面付(扫码支付)功能
May 30 PHP
php支付宝系列之电脑网站支付
May 30 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
May 06 PHP
Mac下关于PHP环境和扩展的安装详解
Oct 17 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
May 02 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
深入Nginx + PHP 缓存详解
2013/07/11 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
PHP会话处理的10个函数
2015/08/11 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
2017/06/07 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
extjs 为某个事件设置拦截器
2010/01/15 Javascript
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
整理Javascript数组学习笔记
2015/11/29 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
VUE脚手架具体使用方法
2019/05/20 Javascript
在Vue环境下利用worker运行interval计时器的步骤
2019/08/01 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
js实现上下左右键盘控制div移动
2020/01/16 Javascript
python 域名分析工具实现代码
2009/07/15 Python
python之yield表达式学习
2014/09/02 Python
Python实现针对含中文字符串的截取功能示例
2017/09/22 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
2019/08/05 Python
python中的列表与元组的使用
2019/08/08 Python
python实发邮件实例详解
2019/11/11 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
Lungolivigno Fashion官网:高级时装在线购物
2020/10/17 全球购物
银行会计职员个人的自我评价
2013/09/29 职场文书
庆元旦广播稿
2014/02/10 职场文书
奥利奥广告词
2014/03/20 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技