使用未定义的常量PHP ver 7.2

It looks like there are quite some posts on this topic, however this case seems to be different.

In PHP version greater than or equal to 7.2 the following code:

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

Will throw an error on second define line 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

Basically the first define is accepted, the second one no....Isn't the code processed one time only? Or does a sort of pre-processor run beforehand throwing the error as if the constant is defined twice?

Should be:

define('AH_DEBUG_MODE', true);

Having: define(AH_DEBUG_MODE, true) you force PHP to evaluate the value of a constant AH_DEBUG_MODE which is obviously not defined yet.

Your code can be simplified to:

define('AH_DEBUG_MODE', !empty($_GET['rxdebug']) || AH_DEBUG);

Your code should be wrapping the constant's name in quotes. Check the manual at 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);
}