Отложив на минуту то, какими могут быть злые глобальные переменные, позвольте мне разбить это на более общую проблему, которую я обнаружил: использование ключей строкового массива вместо переменных.
Ввод ключей строкового массива можетпривести к опечаткам, которые могут быть хитрыми, чтобы обнаружить: $GLOBALS['var1']
против $GLOBALS['varl']
(один против lamda).
Если у вас есть современная IDE, которая выполняет автозаполнение, вы найдете полезным объявить global $variable
, а затем, при вводе его, чтобы вызвать автозаполнение, чтобы получить указание, что вы не делали опечатку.
У такой современной IDE также может быть выделение событий, которое поможет избежать опечаток (вы можете увидеть, если оно появляется поблизости), а также навигации по вашему коду.Опять же, он будет работать только с переменными, а не с ключами массива.
Если вам нужно использовать глобальные переменные, тогда лучше использовать $GLOBALS
, чтобы напомнить вам, откуда пришла переменная, когда вы ищете какое-то значение,Однако может быть полезно, по крайней мере, определить имена переменных как константу, чтобы воспользоваться преимуществами автозаполнения IDE и выделения вхождений: $GLOBALS[_VAR1]
.
Конечно, эти изящные функции также работают с переменными класса, что является еще одной причинойрассмотреть вопрос о рефакторинге:)