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