Несколько вещей здесь.
Во-первых, register_globals, который вы отключаете в своем php.ini, ссылается на старую функцию PHP, где любая переменная, отправляемая через строку запроса (GET) или форму (GET / POST), будет преобразована в глобальную переменную PHP. Это функциональность, которая (и должна быть) отключена при отключении register_globals. Даже при этом вы можете определять глобальные переменные в своем приложении.
В общих терминах программирования глобальные переменные (не PHP-register_globals) считаются «плохими», потому что, когда вы сталкиваетесь с ним как программистом, вы не представляете, какие другие части приложения могут его использовать или изменять, или как это влияет на ваши изменения в этой глобальной могут иметь. Кроме того, если вы определяете новую глобальную переменную, есть вероятность, что вы собираетесь перезаписать существующую переменную, на которую полагается кто-то другой. Когда переменные определены локально (в одной функции или в других языках в одном блоке), вы можете проверить локальную область и обычно определить, что будет делать изменение этой переменной.
Константы, с другой стороны, никогда не меняются. Вы определяете их один раз, и они остаются определенными, и никто не может их изменить. Вот почему наличие глобальных констант считается «менее вредным», чем наличие глобальных переменных.