使用未定义的常量PHP ver 7.2

时间:2019-02-28 15:18:10

标签: php php-7.2

关于该主题的帖子似乎很多,但是这种情况似乎有所不同。

在大于或等于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

基本上,第一个定义被接受,第二个不。。。代码不是只处理一次吗?还是某种预处理器预先运行就抛出错误,就像常量定义了两次一样?

2 个答案:

答案 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);
}