我在PHP中定义了一个常量,例如
define('CONSTANT_NAME', 'constant_value');
我希望以后能够在代码中更改此常量的值。
可以这样做吗?如果是这样,怎么样?
来自http://php.net/manual/en/function.define.php(重点是我的):
define
- 定义一个命名常量
来自http://www.php.net/manual/en/language.constants.php:
顾名思义,在执行脚本期间,该值不会发生变化
当它先前被定义为case_insensitive constant(第三参数)时,可以重新声明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进行测试。
你没有创建变量,你创建了一个常量。常数的一点是,它们无法改变。
您应该使用真正的变量。
那么有一种方法可以改变以前定义的常量。您必须为此目的启用PHP runkit扩展:http://php.net/manual/en/function.runkit-constant-redefine.php
runkit扩展提供了修改常量,用户定义函数和用户定义类的方法。它还通过沙盒提供自定义超全局变量和可嵌入的子解释器。
它使您能够修改PHP中要修改的任何方面。这是先进的东西。
请注意,通常有一个原因可以将常量定义为常量,因此将其更改为除测试之外的其他目的,几乎在任何情况下都不是一个好主意。