PHP常量详解:define和const的区别
常量是一个简单的标识符。在脚本执行期间该值不能改变(除了所谓的魔术常量,他们其实不是常量)。常量默认大小写敏感。通常常量标识符总是大写的。
可以用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常量详解:define和const的区别相关推荐
- MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测) 一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过 ...
- Mysql存储引擎详解(MyISAM与InnoDB的区别)
Mysql存储引擎详解(MyISAM与InnoDB的区别) 存储引擎 MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平 ...
- mysql 社区版 innodb_MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测) / -------------------- 写在最前面 ------------------ ...
- 详解http和https的区别
详解http和https的区别 (转自http://www.jzxue.com/jianzhanzhinan/jianzhanrumen/201103/29-6925.html) http与https ...
- Golang——变量和常量详解
变量: 变量是在程序运行过程中,其值可以发生改变的量,是数据的存储空间,作为静态类型语言,Go变量有固定的数据类型,类型决定了变量内存的长度和存储格式.我们只能修改变量值,无法改变类型. 变量名: 因 ...
- #define和const的区别
(1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开. const常量有 ...
- 算术编码例题详解_百分数与百分点区别详解
通过以往的答疑经验,许多同学对于出现百分点的材料和题目不能够很好的百分点与已知百分数之间的关系.那么百分数与百分点的核心区别在哪里?常见题型中出现的百分数与百分点应该如何进行理解应用? 百分数与百分点 ...
- java中$和 的区别详解_Mybatis之#{}与${}的区别使用详解
1.两种取值方式的差异 mapper.xml映射文件 select * from t_emp WHERE emp_id=${id} and emp_name=#{name} java查询代码 para ...
- 七、Vue cli详解学习笔记——什么是Vue cli ,Vue cli的使用(安装,拉取2.x模板,初始化项目),Vue cli2详解,Runtime-Compiler和Runtime-only区别
一.什么是Vue CLI 如果你只是简单写几个Vue的Demo程序, 那么你不需要Vue CLI. 如果你在开发大型项目, 那么你需要, 并且必然需要使用Vue CLI 使用Vue.js开发大型应用时 ...
最新文章
- 利用反射及ActionFilterAttribute实现MVC权限管理
- 1t硬盘怎么分区最好_网友问题解答:?最简单的方法教你电脑硬盘怎么分区?
- MySQL数据库的内连接,左外连接和右外连接查询
- python qt5 designer 免费安装_PyCharm离线安装PyQt5_tools(QtDesigner)
- 涉密计算机的安全审计和检查,计算机安全保密审计报告.doc
- 搭建golang+vscode开发环境
- 《应用商务统计分析》第五章 定序回归
- 他是发明声呐的物理天才,被妻子家暴后出轨守寡的师母,爱因斯坦却公开支持.........
- 互联网企业实习面试经验分享(谷歌微软hulu阿里腾讯字节美团百度等等)
- 生活是艰难的,我又划着我的断桨出发了
- 叶罗丽用计算机对话,叶罗丽小剧场:王默和水王子秀恩爱,俩人的对话也太搞笑了...
- Access violation reading location 0x00000004.
- 技术书籍也香艳【关于Head First Design Patterns 封面女郎】
- android 7 评测,iQOO 7 评测:性能出众,操控全面升级的横屏旗舰
- 利用微信API将你的微信变为聊天机器人
- 在线绘制图表工具的使用
- 计算机网络 万维网的文档
- QQ邮箱模拟登陆(2022.9.12)
- HMS Core-IAP特性功能之卡券服务
- android 查看设备 x86,有了它 x86安卓设备就能用Windows软件了
热门文章
- ocr 超时小票识别_票总管-发票识别核验利器
- 获取当前html的名字,c#获取当前页面名字
- mac 上mysql怎么卸载不了_mac上mysql怎么卸载不了
- Centos7 ifconfig这个命令没找到的解决方法
- eureka 客户端服务启动了又失败了_Spring cloud Eureka服务注册与发现详解
- 风变Python3---if条件相关的学习
- seleniumpython定位网页元素方法_Python+Selenium 定位元素
- DSP之外部设备连接接口之HPI
- Redis入门到入土教程_1
- 简述中断和 DMA 的区别。