我们经常把不经常变的值定义成常量,常量一般用全部大写来表示,前面不加美元符号,那么define和const有什么区别呢?

常量是一个简单的标识符。在脚本执行期间该值不能改变(除了所谓的魔术常量,他们其实不是常量)。常量默认大小写敏感。通常常量标识符总是大写的。

可以用define()函数来定义常量。在php5.3.0以后,可以使用const关键字在类定义的外部定义常量,php7可以定义数组常量了,先前版本const关键字只能在类(class)中使用。一个常量一旦被定义,就不能再改变或取消定义。

<?php
// 以下代码在 PHP 5.3.0 后可以正常工作
const USERNAME = '周伯通';
echo USERNAME.PHP_EOL;
echo constant("USERNAME"); const ZHOUUSERNAME = '周伯通九阴真经'; define('MYUSERNAME','周伯通九阴真经2');
echo "<pre>";
print_r(get_defined_constants());
?>

常量和变量有如下不同:

1、const是一个语言结构;而define是一个函数,可以通过第三个参数来指定是否区分大小写。true表示大小写不敏感,默认为false

2、const简单易读,编译时要比define快很多。

3、const可在类中使用,用于类成员常量定义,定义后不可修改;define不能在类中使用,可用于全局变量

<?php
class MyClass
{
const USER = '周伯通'; function showConstant() {
echo self::USER . PHP_EOL;
echo constant('USER'); // 注意:Warning: constant(): Couldn't find constant USER
}
}
$class = new MyClass();
$class->showConstant();

4、const是在编译时定义,因此必须处于最顶端的作用区域,不能在函数,循环及if条件中使用;而define是函数,也就是能调用函数的地方都可以使用

<?php
$x = true;
if ($x==1){
//const FOO = 'BAR'; // 无效的invalid
}
if ($x==1){
define('FOO', 'BAR'); // 有效的valid
echo FOO;
}

最新文章

  1. iOS 判断网络连接状态的几种方法
  2. 【技巧篇】解决悬浮的&lt;header&gt;、&lt;footer&gt;遮挡内容的处理技巧
  3. 手动获取spring的ApplicationContext和bean对象
  4. ab.exe使用
  5. Windows Form 中快捷键设置
  6. linux学习之系统管理、网络配置、软件安装
  7. 对Spring的理解
  8. js中如何把字符串转化为对象
  9. LFS,编译自己的Linux系统 - 完成准备工作
  10. js取一维数组最大值,最小值
  11. jquery-ui-multiselect 的使用
  12. CSS3 box-sizing属性的应用
  13. win10+ ubuntu12.04双系统安装教程与遇到的问题
  14. ios键盘弹起 body的高度拉长,页面底部空白问题。ios软键盘将页面抵到上面后,关闭软键盘页面不回弹的问题。
  15. 金融量化分析【day110】:Pandas-DataFrame索引和切片
  16. ssl证书 以及phpstudy配置ssl证书
  17. .net第四章内容总结
  18. 使用ScriptableObject创建.asset文件
  19. 基于HTML5 Canvas 实现地铁站监控
  20. Jmeter OutofMemory Error

热门文章

  1. java爬虫案例学习
  2. Spring中Model、ModelMap及ModelAndView之间的区别
  3. 购物车自己sql错误
  4. VS 2013+ ArcGIS 10.3 AddIn 断点不断异常解决
  5. centos7防火墙配置
  6. partial 的随笔
  7. sql server xp_cmdshell 过程中报错原因
  8. Egret 生成 自带EUI 的微信小游戏 踩坑!
  9. [Swift]LeetCode49. 字母异位词分组 | Group Anagrams
  10. ThinkPHP 数据库操作(二) : 增删改查