我们通常把不经常变的值定义成常量,常量一般用全部大写来表示,前面不加美元符号,也可减少团队开发的出错。那么define和const有什么区别呢?

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

define('PI', 3.14, true);

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

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

class MyClass
{
const CONS = '常量值'; function showConstant() {
echo self::CONS . PHP_EOL;
echo constant('CONS');
}
}

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

if (...){
const FOO = 'BAR'; // 无效的invalid
}
if (...) {
define('FOO', 'BAR'); // 有效的valid
}

5、const只能用普通的常量名,define常量名中可以有表达式

const  FOO = 'BAR';
for ($i = 0; $i < 32; ++$i) {
define('BIT_' . $i, 1 << $i);
}

6、const定义的常量只能是静态常量,define可以是任意表达式

const BIT_5 = 1 << 5;    // valid since PHP 5.6
define('BIT_5', 1 << 5); // 有效的valid

最新文章

  1. 求两圆相交部分面积(C++)
  2. OpenCascade Primitives BRep - Box
  3. 第十二天 jni 了解
  4. 【POJ 3320】Jessica&#39;s Reading Problemc(尺取法)
  5. Python-S13作业-day1-之登陆程序
  6. Axis2 WebService(基于REST风格)
  7. oracle之replace结合substr的使用
  8. .net 常用方法
  9. 经典排序算法 - 基数排序Radix sort
  10. PHP class which generates PDF files from UTF-8 encoded HTML
  11. Java设计模式之《享元模式》及应用场景
  12. vue中数据双向绑定注意点
  13. 使用zabbix监控mysql的三种方式
  14. 使用sed替换一行内多个括号内的值
  15. Go 语言指针
  16. 如何给CentOS 安装Vmware Tools
  17. Xamarin常见问题
  18. 把项目运行到本地环境及mysql配置
  19. Python_环境部署及报错汇总(0)
  20. Centos7.1环境下搭建SVN

热门文章

  1. Soldiers Sortie
  2. Codeforce 1255 Round #601 (Div. 2)D. Feeding Chicken (模拟)
  3. PinPoint APM搭建全过程
  4. golang server示例
  5. GoF23:单例模式(singleton)
  6. 前后端bug定位
  7. 第六章第二十题(计算一个字符串中字母的个数)(Count the letters in a string) - 编程练习题答案
  8. 架构设计 | 分布式系统调度,Zookeeper集群化管理
  9. 设计模式之GOF23代理模式01
  10. Vue.js-Vue的初体验