¿Quién puede argumentar en contra de la experiencia, los títulos universitarios y la ingeniería de software? Yo no. Solo diría que al desarrollar aplicaciones PHP de una sola página orientadas a objetos, me divierto más cuando sé que puedo construir todo desde cero sin preocuparme por las colisiones de espacios de nombres. Construir desde cero es algo que muchas personas ya no hacen. Tienen un trabajo, una fecha límite, una bonificación o una reputación de la que preocuparse. Estos tipos tienden a usar tanto código prediseñado con mucho en juego, que no pueden arriesgarse a usar variables globales en absoluto.
Puede ser malo usar variables globales, incluso si solo se usan en el área global de un programa, pero no nos olvidemos de aquellos que solo quieren divertirse y hacer que algo funcione .
Si eso significa usar algunas variables (<10) en el espacio de nombres global, eso solo se usa en el área global de un programa, que así sea. Sí, sí, MVC, inyección de dependencia, código externo, bla, bla, bla, bla. Pero, si ha contenido el 99,99% de su código en espacios de nombres y clases, y el código externo está en un espacio aislado, el mundo no se acabará (repito, el mundo no se acabará) si utiliza una variable global.
Generalmente, no diría que usar variables globales es una mala práctica . Yo diría que usar variables globales (banderas y similares) fuera del área global de un programa es buscar problemas y (a la larga) desaconsejado porque puede perder la pista de sus estados con bastante facilidad. Además, diría que cuanto más aprenda, menos dependerá de las variables globales porque habrá experimentado la "alegría" de rastrear los errores asociados con su uso. Esto solo lo incentivará a encontrar otra forma de resolver el mismo problema. Casualmente, esto tiende a empujar a las personas de PHP en la dirección de aprender a usar los espacios de nombres y las clases (miembros estáticos, etc.).
El campo de la informática es vasto. Si asustamos a todos para que no hagan algo porque lo etiquetamos como malo , entonces pierden la diversión de comprender verdaderamente el razonamiento detrás de la etiqueta.
Use variables globales si es necesario, pero luego vea si puede resolver el problema sin ellas. Las colisiones, las pruebas y la depuración significan más cuando comprendes íntimamente la verdadera naturaleza del problema, no solo una descripción del problema.