更改先前定义的常量的值

时间:2011-12-12 22:33:30

标签: php constants

我在PHP中定义了一个常量,例如

define('CONSTANT_NAME', 'constant_value');

我希望以后能够在代码中更改此常量的值。

可以这样做吗?如果是这样,怎么样?

6 个答案:

答案 0 :(得分:28)

来自http://php.net/manual/en/function.define.php(重点是我的):

  

define - 定义命名的常量

来自http://www.php.net/manual/en/language.constants.php

  

顾名思义,在执行脚本

期间,该值不会改变

答案 1 :(得分:13)

当以前定义为case_insensitive constant(第3个参数)时,可以重新声明define。

请参阅:

$ php -r "define('TEST','foo',true); var_dump(TEST); define('TEST','bar'); var_dump(TEST);"
string(3) "foo"
string(3) "bar"

使用PHP CLI 5.2.6和5.5.3进行测试。

答案 2 :(得分:8)

您没有创建变量,您创建了一个常量。常数的一点是,它们不能改变。

您应该使用真正的变量。

答案 3 :(得分:3)

为了变通,将第三个参数设置为true会为您提供帮助

define('CONSTANT_NAME', 'constant_value', true);
print CONSTANT_NAME.PHP_EOL;
define('CONSTANT_NAME', 'constant_value2');
print CONSTANT_NAME.PHP_EOL;

https://ideone.com/oUG5M9

答案 4 :(得分:0)

有一种方法可以更改以前定义的常量。为此,您必须启用PHP Runkit扩展:http://php.net/manual/en/function.runkit-constant-redefine.php

  

runkit扩展提供了修改常量的方法,用户定义   函数和用户定义的类。它还提供自定义   通过沙箱实现超全局变量和可嵌入的子解释器。

它使您能够修改要在PHP中修改的任何方面。这是高级的东西。

请不要说通常将常量定义为常量的原因,因此在几乎任何情况下将其更改为测试以外的其他目的可能都不是一个好主意。

答案 5 :(得分:0)

您可以使用使用const ...作为...

define('CONSTANT_NAME', 'constant_value');
define('NEW_CONSTANT_NAME', 'constant_value2');
use const NEW_CONSTANT_NAME as CONSTANT_NAME;
echo CONSTANT_NAME;