你可以取消定义或更改PHP中的常量?

你可以取消定义或更改PHP中的常量?

不,常数是恒定的 。

参考: php.net/manual/language.constants.php

我知道这场比赛已经很晚了,但是这里有一件事可能会帮助一些人…

在我的“Application.php”文件中(我定义了所有的常量并包含在我的所有脚本中),我做了这样的事情:

if( !defined( "LOGGER_ENABLED" )){ define( "LOGGER_ENABLED", true ); } 

所以通常情况下,每个脚本都将启用日志logging…但如果在一个特定的脚本中,我不想要这种行为,我可以简单地做到这一点之前,我包括我的Application.php:

 define( "LOGGER_ENABLED", false ); 

如果你绝对需要这样做(虽然我不会像别人所说的那样推荐它),但你总是可以使用Runkit。

http://www.php.net/manual/en/function.runkit-constant-redefine.php

http://www.php.net/manual/en/function.runkit-constant-remove.php

没有。一旦一个常量被定义,它永远不能被改变或不确定。

其他海报是正确的 – 你不能这样做。 但是也许你可以把你的定义转移到你知道常数的最佳值是什么的地步。

也许你正在定义一个大列表中的常量:

 define('STRING1','Foo'); define('STRING2', 'Bar'); define('STRING3', 'Baz'); 

一旦发现条件,您想要更改STRING2的值。 一种方法是推迟定义,直到你知道正确的设置。

 define('STRING1','Foo'); // define('STRING2', 'Bar'); -- wait until initialization define('STRING3', 'Baz'); ... if (condition) { define('STRING2', 'Bar type 2'); } else { define('STRING2', 'Bar type 1'); } 

逻辑设置STRING2甚至可以在不同的文件中,稍后在处理中。

如其他地方没有提到的,uopz扩展允许一个常量通过uopz_undefine()被删除,PHP 5.4+。