Кто может спорить с опытом, высшим образованием и разработкой программного обеспечения? Не я. Я бы только сказал, что при разработке объектно-ориентированных одностраничных PHP-приложений мне больше нравится, когда я знаю, что могу построить все с нуля, не беспокоясь о конфликтах пространств имен. Строить с нуля многие люди больше не делают. У них есть работа, дедлайн, бонусы или репутация, о которых нужно заботиться. Эти типы склонны использовать так много заранее созданного кода с высокими ставками, что они вообще не могут рисковать использованием глобальных переменных.
Может быть плохо использовать глобальные переменные, даже если они используются только в глобальной области программы, но давайте не будем забывать о тех, кто просто хочет развлечься и заставить что-то работать .
Если это означает использование нескольких переменных (<10) в глобальном пространстве имен, которые используются только в глобальной области программы, пусть будет так. Да, да, MVC, внедрение зависимостей, внешний код, бла, бла, бла, бла. Но если вы поместили 99,99% вашего кода в пространства имен и классы, а внешний код изолирован, мир не закончится (я повторяю, мир не закончится), если вы используете глобальную переменную.
В общем, я бы не сказал, что использование глобальных переменных - плохая практика . Я бы сказал, что использование глобальных переменных (флагов и т. Д.) Вне глобальной области программы вызывает проблемы и (в конечном итоге) нецелесообразно, потому что вы можете довольно легко потерять их состояние. Кроме того, я бы сказал, что чем больше вы узнаете, тем меньше вы будете полагаться на глобальные переменные, потому что вы испытаете «радость» от отслеживания ошибок, связанных с их использованием. Уже одно это побудит вас найти другой способ решения той же проблемы. По совпадению, это подталкивает PHP-людей к изучению того, как использовать пространства имен и классы (статические члены и т. Д.).
Область информатики обширна. Если мы отпугнуть всех от делать что - то , потому что мы называем это плохо , то они теряют на удовольствие от истинного понимания рассуждения позади метки.
При необходимости используйте глобальные переменные, но затем посмотрите, сможете ли вы решить проблему без них. Коллизии, тестирование и отладка значат больше, когда вы хорошо понимаете истинную природу проблемы, а не просто описание проблемы.