关于该主题的帖子似乎很多,但是这种情况似乎有所不同。
在大于或等于7.2的PHP版本中,以下代码:
if (!empty($_GET['rxdebug']) || AH_DEBUG){
define(AH_DEBUG_MODE, true);
}else{
define(AH_DEBUG_MODE, false);
}
将在第二个定义行define(AH_DEBUG_MODE, false);
上引发错误
Use of undefined constant AH_DEBUG_MODE- assumed 'AH_DEBUG_MODE' (this will throw an Error in a future version of PHP) in some-file.php on line xxx
基本上,第一个定义被接受,第二个不。。。代码不是只处理一次吗?还是某种预处理器预先运行就抛出错误,就像常量定义了两次一样?
答案 0 :(得分:5)
应该是:
define('AH_DEBUG_MODE', true);
具有:define(AH_DEBUG_MODE, true)
,您迫使PHP评估显然尚未定义的常量AH_DEBUG_MODE
的值。
您的代码可以简化为:
define('AH_DEBUG_MODE', !empty($_GET['rxdebug']) || AH_DEBUG);
答案 1 :(得分:2)
您的代码应将常量的名称括在引号中。在http://php.net/manual/en/function.define.php
中查看手册if (!empty($_GET['rxdebug']) || AH_DEBUG){
define('AH_DEBUG_MODE', true);
}else{
define('AH_DEBUG_MODE', false);
}