Qui peut s'opposer à l'expérience, aux diplômes universitaires et au génie logiciel? Pas moi. Je dirais seulement qu'en développant des applications PHP mono-page orientées objet, je m'amuse plus quand je sais que je peux tout construire à partir de zéro sans me soucier des collisions d'espace de noms. Construire à partir de zéro est quelque chose que beaucoup de gens ne font plus. Ils ont un travail, une date limite, un bonus ou une réputation dont ils doivent se soucier. Ces types ont tendance à utiliser tellement de code pré-construit avec des enjeux élevés, qu'ils ne peuvent pas risquer du tout d'utiliser des variables globales.
Il peut être mauvais d'utiliser des variables globales, même si elles ne sont utilisées que dans la zone globale d'un programme, mais n'oublions pas ceux qui veulent juste s'amuser et faire fonctionner quelque chose .
Si cela signifie utiliser quelques variables (<10) dans l'espace de noms global, qui ne sont utilisées que dans la zone globale d'un programme, qu'il en soit ainsi. Oui, oui, MVC, injection de dépendance, code externe, bla, bla, bla, bla. Mais, si vous avez contenu 99,99% de votre code dans des espaces de noms et des classes, et que le code externe est en bac à sable, le monde ne s'arrêtera pas (je le répète, le monde ne s'arrêtera pas) si vous utilisez une variable globale.
En général, je ne dirais pas que l'utilisation de variables globales est une mauvaise pratique . Je dirais que l'utilisation de variables globales (drapeaux et autres) en dehors de la zone globale d'un programme pose des problèmes et (à long terme) est déconseillé car vous pouvez perdre la trace de leurs états assez facilement. Aussi, je dirais que plus vous apprenez, moins vous serez dépendant des variables globales car vous aurez expérimenté la "joie" de traquer les bogues associés à leur utilisation. Cela seul vous incitera à trouver un autre moyen de résoudre le même problème. Par coïncidence, cela tend à pousser les personnes PHP dans le sens de l'apprentissage de l'utilisation des espaces de noms et des classes (membres statiques, etc ...).
Le domaine de l'informatique est vaste. Si nous effrayons tout le monde de faire quelque chose parce que nous le qualifions de mauvais , alors ils perdent le plaisir de vraiment comprendre le raisonnement derrière l'étiquette.
Utilisez des variables globales si nécessaire, mais voyez ensuite si vous pouvez résoudre le problème sans elles. Les collisions, les tests et le débogage signifient plus lorsque vous comprenez intimement la vraie nature du problème, pas seulement une description du problème.