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 相关文章推荐
中国站长站 For Dede4.0 采集规则
May 27 PHP
用php实现让页面只能被百度gogole蜘蛛访问的方法
Dec 29 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
Apr 28 PHP
PHP学习之正则表达式
Apr 17 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
php绘制一个扇形的方法
Jan 24 PHP
ThinkPHP实现递归无级分类――代码少
Jul 29 PHP
phpMyAdmin无法登陆的解决方法
Apr 27 PHP
php递归函数怎么用才有效
Feb 24 PHP
PHP实现负载均衡下的session共用功能
Apr 17 PHP
php解决约瑟夫环算法实例分析
Sep 30 PHP
php 使用 __call实现重载功能示例
Nov 18 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实现的MySQL数据浏览器
2007/03/11 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
php解析url并得到url中的参数及获取url参数的四种方式
2015/10/26 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
CodeIgniter常用知识点小结
2016/05/26 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
BOM与DOM的区别分析
2010/10/26 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
jQuery点缩略图弹出层显示大图片
2015/02/13 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
微信小程序 地图定位简单实例
2016/10/14 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
使用python 打开文件并做匹配处理的实例
2019/01/02 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
《小小雨点》教学反思
2014/02/18 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
市场营销管理毕业生自荐信
2014/03/03 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
股东协议书范本
2014/04/14 职场文书
宣传标语大全
2014/07/01 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers
python多线程方法详解
2022/01/18 Python