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 相关文章推荐
将OICQ数据转成MYSQL数据
Oct 09 PHP
傻瓜化配置PHP环境――Appserv
Dec 13 PHP
PHP下用rmdir实现删除目录的三种方法小结
Apr 20 PHP
用PHP与XML联手进行网站编程代码实例
Jul 10 PHP
PHP开发者常犯的10个MySQL错误更正剖析
Jan 30 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
Aug 09 PHP
PHP加密函数 Javascript/Js 解密函数
Sep 23 PHP
php调整服务器时间的方法
Apr 03 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
Aug 09 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
Thinkphp5+uploadify实现的文件上传功能示例
May 26 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
Feb 11 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精确的统计在线人数的方法
2015/10/21 PHP
php实现登录页面的简单实例
2019/09/29 PHP
Javascript将string类型转换int类型
2010/12/09 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
JSONP之我见
2015/03/24 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
js绘制圆形和矩形的方法
2015/08/05 Javascript
javascript中offset、client、scroll的属性总结
2015/08/13 Javascript
Javascript随机标签云代码实例
2016/06/21 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
python中执行shell命令的几个方法小结
2014/09/18 Python
python文件操作整理汇总
2014/10/21 Python
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
python编码最佳实践之总结
2016/02/14 Python
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
Python笔记之观察者模式
2019/11/20 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
python 爬取疫情数据的源码
2020/02/09 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
专升本自我鉴定
2013/10/10 职场文书
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
出国留学担保书
2014/05/20 职场文书
学生安全承诺书
2014/05/22 职场文书
2014年副班长工作总结
2014/12/10 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
男人帮观后感
2015/06/18 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书
创业计划书之家政服务
2019/09/18 职场文书
服务器间如何实现文件共享
2022/05/20 Servers