php定义常量 define vs const


常量一旦定义就不能在改变或者取消。 在php中定义常量可以使用define()函数,在php5.3之后同样可以使用const关键字来定义常量。

define 和 const的区别

语法区别

// 使用define定义常量
define("Pi",3.14);
// 使用const定义常量
const Pi1 = 3.14
复制代码

定义时期区别

define() 在执行期定义常量,而 const 在编译期定义常量。 这就意味着不能在函数内,循环内以及 if 语句之内用 const 来定义常量。

 if( true){
    define("STEP",1);
 }
=> true

if( true ){                   
   const STEP = 1;                                                                                  }
PHP Parse error: Syntax error, unexpected T_CONST on line 2
>>> 
复制代码

命名空间

define() 定义常量在全局根命名空间下面,而const定义的常量会在当前的命名空间下面。

>>> namespace Test;
>>> define("TEST","test");
=> true
>>> echo  \Test\TEST;
PHP Fatal error:  Undefined constant Test\TEST in eval()'d code on line 1
>>> echo  \TEST;
test⏎
>>> const TEST1 = "test";
>>> echo \Test\TEST1
test⏎
>>> echo \TEST1
PHP Error:  Undefined constant 'TEST1' on line 3
>>> 
复制代码

表达式

define允许你在常量名和常量值中使用表达式,const不支持,这使得define很灵活

define('TRANSPORT_METHOD_SNEAKING', 1 << 0); // OK!
const TRANSPORT_METHOD_WALKING = 1 << 1; //Compile error! const can't use expressions as values
复制代码

类常量

可以把在类中始终保持不变的值使用const定义为常量,define不能在类中定义常量

<?php
class MyClass
{
    const constant = 'constant value';

    function showConstant() {
        echo  self::constant . "\n";
    }
}

echo MyClass::constant . "\n";

$classname = "MyClass";
echo $classname::constant . "\n"; // 自 5.3.0 起

$class = new MyClass();
$class->showConstant();

echo $class::constant."\n"; // 自 PHP 5.3.0 起
?>
复制代码

原文链接 github.com/DanceSmile/…

转载于:https://juejin.im/post/5aa0dec6f265da239f06f141

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值