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 事务处理数据实现代码
May 13 PHP
php 定界符格式引起的错误
May 24 PHP
web目录下不应该存在多余的程序(安全考虑)
May 09 PHP
php二维数组转成字符串示例
Feb 17 PHP
dedecms函数分享之获取某一栏目所有子栏目
May 19 PHP
再推荐十款免费的php开发工具
Nov 09 PHP
PHP+JavaScript实现无刷新上传图片
Feb 21 PHP
php分页查询的简单实现代码
Mar 14 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
Jun 06 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
Jul 19 PHP
详解PHP序列化和反序列化原理
Jan 15 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
支持oicq头像的留言簿(二)
2006/10/09 PHP
php学习笔记 数组遍历实现代码
2011/06/09 PHP
基于php socket(fsockopen)的应用实例分析
2013/06/02 PHP
php连接函数implode与分割explode的深入解析
2013/06/26 PHP
php根据日期判断星座的函数分享
2014/02/13 PHP
PHP+ajax分页实例简析
2015/12/07 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
PHP PDOStatement::fetch讲解
2019/01/31 PHP
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
js同比例缩放图片的小例子
2013/10/30 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
Python中bisect的用法
2014/09/23 Python
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
宣传策划类求职信范文
2014/01/31 职场文书
运动会邀请函范文
2014/02/06 职场文书
社区服务活动总结
2014/05/07 职场文书
护士2015年终工作总结
2015/04/29 职场文书
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js