PHP常量define和const的区别详解


Posted in PHP onMay 18, 2019

前言

常量是一个简单的标识符。在脚本执行期间该值不能改变(除了所谓的魔术常量,他们其实不是常量)。常量默认大小写敏感。通常常量标识符总是大写的。

可以用define()函数来定义常量。在php5.3.0以后,可以使用const关键字在类定义的外部定义常量,先前版本const关键字只能在类(class)中使用。一个常量一旦被定义,就不能再改变或取消定义。

常量只能包含标量数据(boolean、integer、float和string)。可以定义resource常量,但应尽量避免,因为会造成不可预料的结果。

可以简单的通过指定其名字来获得常量的值,与变量不同,不应该在常量的前面加上$符号。如果常量名是动态的,也可以用函数constant()来获取常量的值。用get_defined_contstants()可以获得所有已定义的常量列表。

常量和变量有如下不同:

1、常量前面没有美元符号($)
2、常量只能通过define()函数定义,而不能通过赋值语句

3、常量可以不用理会变量的作用域在任何地方定义和访问

4、常量一旦定义就不能重新定义或取消定义

5、常量的值只能是标量

<?php
// 以下代码在 PHP 5.3.0 后可以正常工作
const USERNAME = 'zhouguowei';
echo USERNAME;
echo constant("USERNAME");
 
const ZHOUUSERNAME = 'zhouguowei2222222222';
 
define('MYUSERNAME','zhouguowei1111111');
echo "<pre>";
print_r(get_defined_constants()); 
?>

问:在php中定义常量时,const和define的区别?

答:使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数。另外const在编译时要比define快很多。

1、const用于类成员变量的定义,一经定义,不可修改。Define不可以用于类成员变量的定义,可用于全局常量。

2、Const可在类中使用,define不能

3、Const不能再条件语句中定义常量

<?php
if (...){
const FOO = 'BAR'; // 无效的invalid
}
if (...) {
define('FOO', 'BAR'); // 有效的valid
}
?>

4、const采用普通的常量名称,define可以采用表达式作为名称

<?php
const FOO = 'BAR';
for ($i = 0; $i < 32; ++$i) {
define('BIT_' . $i, 1 << $i);
}
?>

5、const只能接受静态的标量,而define可以采用任何表达式

<?php
const BIT_5 = 1 << 5; // 无效的invalid
define('BIT_5', 1 << 5); // 有效的valid
?>

6、const定义的常量时大小写敏感,而define可以通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。

<?php
define('FOO', 'BAR', true);
echo FOO; // BAR
echo foo; // BAR
?>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
PHP date函数参数详解
Nov 27 PHP
PHP 引用文件技巧
Mar 02 PHP
收集的二十一个实用便利的PHP函数代码
Apr 22 PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 PHP
php版本的cron定时任务执行器使用实例
Aug 19 PHP
ThinkPHP基本的增删查改操作实例教程
Aug 22 PHP
PHP curl 抓取AJAX异步内容示例
Sep 09 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
Nov 03 PHP
php实现使用正则将文本中的网址转换成链接标签
Dec 03 PHP
php实现的通用图片处理类
Mar 24 PHP
一段实用的php验证码函数
May 19 PHP
Smarty缓存机制实例详解【三种缓存方式】
Jul 20 PHP
thinkphp5框架实现的自定义扩展类操作示例
May 16 #PHP
java解析json方法总结
May 16 #PHP
微信支付之JSAPI公众号支付详解
May 15 #PHP
php获取目录下所有文件及目录(多种方法)(推荐)
May 14 #PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 #PHP
yii2的restful api路由实例详解
May 14 #PHP
php的扩展写法总结
May 14 #PHP
You might like
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
php密码生成类实例
2014/09/24 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
javascript中万恶的function实例分析
2011/05/25 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
微信小程序 开发经验整理
2017/02/15 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
微信小程序仿美团城市选择
2018/06/06 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
AJAX在JQuery中的应用详解
2019/01/30 jQuery
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
Python2中的raw_input() 与 input()
2015/06/12 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
关于.NET, HTML的五个问题
2012/08/29 面试题
导游个人求职信
2014/04/25 职场文书
企业总经理任命书
2014/06/05 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
2015年高校保卫处工作总结
2015/07/23 职场文书
思想品德课教学反思
2016/02/24 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android