php 中define()和const几大区别

本文对比了PHP中使用define()函数与const关键字定义常量的不同之处,包括版本支持、定义位置、表达式支持以及大小写敏感性等方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

        常量只能包含标量数据booleanintegerfloatstring)。可以定义resource常量,但应尽量避免,因为会造成不可预料的结果。

一、版本差异

         define()使用在 php4 版本和 php5 版本中

         const使用在 php5.3.0 及以上的版本

二、定义位置的区别

         函数define()可以在函数内、循环内、条件语句内等能够被调用的任何地方定义常量

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

        const用于类成员变量的定义,一经定义,不可修改,定义常量必须处于最顶端的作用区域,因此const不能在函数内、循环内、条件语句中定义常量

    <?php
      const DEMO = 'DEMO';
      class Person{
          const MAN = '男';
          const WOMAN = '女';
      }

      interface USB{
          const VERSION_2 = '2.0';
          const VERSION_3 = '3.0';
      }
    ?>

三、对值的表达式支持的差异

        const采用普通的常量名称,只能接受静态的标量;函数define()可以采用表达式作为名称

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

四、对字符大小写敏感的支持差异

      define()可以接收第3个参数,如果该参数为true,则表示常量名的大小写不敏感;

      const   关键字定义常量却没有提供类似的功能

    <?php
      //define()的第3个参数为true时,表示大小写不敏感
      define('SITE_NAME', 'CodePlayer', true);
      echo SITE_NAME;     //输出:CodePlayer
      echo site_name;     //输出:CodePlayer
      echo SiTe_NamE;     //输出:CodePlayer

      const DOMAIN_NAME = '365mini.com';
      echo DOMAIN_NAME;   //输出:365mini.com
      echo domain_name;   //PHP提示常量未定义
      echo DomaIN_nAMe;   //PHP提示常量未定义
    ?>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值