使用未定义的常量PHP ver 7.2

Ric*_*rdo 1 php php-7.2

看起来这个主题有很多帖子,但是这种情况似乎有所不同.

在大于或等于7.2的PHP版本中,以下代码:

if (!empty($_GET['rxdebug']) || AH_DEBUG){
    define(AH_DEBUG_MODE, true);
}else{
    define(AH_DEBUG_MODE, false);
}
Run Code Online (Sandbox Code Playgroud)

将在第二个定义行上抛出错误 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
Run Code Online (Sandbox Code Playgroud)

基本上第一个定义被接受,第二个定义没有....是不是代码只处理了一次?或者某种预处理器预先运行抛出错误,好像常量定义了两次?

emi*_*mix 5

应该:

define('AH_DEBUG_MODE', true);
Run Code Online (Sandbox Code Playgroud)

拥有:define(AH_DEBUG_MODE, true)你强制PHP来评估一个AH_DEBUG_MODE显然尚未定义的常量的值.

您的代码可以简化为:

define('AH_DEBUG_MODE', !empty($_GET['rxdebug']) || AH_DEBUG);
Run Code Online (Sandbox Code Playgroud)