更改先前定义的常量的值

问题描述 投票:18回答:4

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

define('CONSTANT_NAME', 'constant_value');

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

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

php constants
4个回答
29
投票

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

define - 定义一个命名常量

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

顾名思义,在执行脚本期间,该值不会发生变化


14
投票

当它先前被定义为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进行测试。


8
投票

你没有创建变量,你创建了一个常量。常数的一点是,它们无法改变。

您应该使用真正的变量。


1
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.