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的实现思路和核心程序(三)
Oct 09 PHP
PHP4实际应用经验篇(9)
Oct 09 PHP
php UBB 解析实现代码
Nov 27 PHP
用php简单实现加减乘除计算器
Jan 06 PHP
PHP小教程之实现链表
Jun 09 PHP
thinkphp3.0输出重复两次的解决方法
Dec 19 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
php实现无限级分类查询(递归、非递归)
Mar 10 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
Laravel中间件实现原理详解
Oct 09 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
May 24 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 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
如何去掉文章里的 html 语法
2006/10/09 PHP
PHP 增加了对 .ZIP 文件的读取功能
2006/10/09 PHP
php将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
js和php如何获取当前url的内容
2013/09/22 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
jquery常用操作小结
2014/07/21 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
Python找出最小的K个数实例代码
2018/01/04 Python
python如何为被装饰的函数保留元数据
2018/03/21 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
RetroStage德国:复古服装
2019/02/03 全球购物
小学毕业感言500字
2014/02/28 职场文书
社区健康教育实施方案
2014/03/18 职场文书
新闻编辑求职信
2014/04/09 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
护士求职信
2014/07/05 职场文书
收款委托书
2014/10/14 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL
HTML中的表格元素介绍
2022/02/28 HTML / CSS
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript