• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP中define() 与 const定义常量的区别详解
    POST TIME:2021-10-18 04:25

    本文实例讲述了PHP中define() 与 const定义常量的区别。分享给大家供大家参考,具体如下:

    前言

    今天在Stackoverflow又看到一个很有趣的文章,所以翻译过后摘了过来。文章是由PHP开发成员之一的NikiC写的,权威性自然毋庸置疑

    正文

    在PHP5.3中,有两种方法可以定义常量:

    1. 使用const关键字
    2. 使用define()方法
    const FOO = 'BAR';
    define('FOO','BAR');
    
    

    这两种方式的根本区别在于const会在代码编译时定义一个常量,而define则是在代码运行时才定义一个常量。这就使得const会有以下几个缺点:

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

    你可以能会问为什么我要这么做?一个最平常的例子是当你在检测一个常量是否已经被定义时:

    if (!defined('FOO')) {
      define('FOO', 'BAR');
    }
    
    
    const BIT_5 = 1  5;  // 在PHP5.6之后有效,之前无效
    define('BIT_5', 1  5); // 一直有效
    
    
    for ($i = 0; $i  32; ++$i) {
      define('BIT_' . $i, 1  $i);
    }
    
    
    define('FOO', 'BAR', true);
    echo FOO; // BAR
    echo foo; // BAR
    
    

    以上就是你需要注意的几点。那么现在我来说明以下,为什么不涉及以上情况下,我个人总是习惯使用const

    namespace A\B\C;
    // 如果要定义常量 A\B\C\FOO:
    const FOO = 'BAR';
    define('A\B\C\FOO', 'BAR');
    
    
    const FOO = [1, 2, 3];  // 在PHP 5.6中有效
    define('FOO', [1, 2, 3]); // 在PHP 5.6无效, 在PHP 7.0有效
    
    

    尤其是在使用define定义大量常量时,PHP的运行速度会变得非常慢。人们甚至发明了诸如apc_load_constantshide来避免这个问题

    define相比,const能使定义常量的效率提高一倍(在配置有XDebug的开发机器上,这个差异还会更大)。但是在查询时间上,两者是没有区别的(因为二者用的都是同一个查询表)

    最后需要注意的一点是,const可以在classinterface当中使用 ,而define是做不到这一点的:

    class Foo {
      const BAR = 2; // 有效
    }
    class Baz {
      define('QUX', 2); // 无效
    }
    
    

    总结

    除非你需要使用表达式或者在条件语句中定义常量,不然的话仅仅是为了代码的简单可读性你都最好要使用const

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php常用函数与技巧总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • 解析php中static,const与define的使用区别
    • php中get_defined_constants函数用法实例分析
    • 解析php中const与define的应用区别
    • PHP常量define和const的区别详解
    • php 静态变量与自定义常量的使用方法
    • php预定义常量
    • 深入php define()函数以及defined()函数的用法详解
    • 探讨php define()函数及defined()函数使用详解
    • 理解PHP5中static和const关键字的区别
    • php中static和const关键字用法分析
    上一篇:php字符串截取函数mb_substr用法实例分析
    下一篇:不常用但很实用的PHP预定义变量分析
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信