Wer kann gegen Erfahrung, Hochschulabschlüsse und Software-Engineering argumentieren? Nicht ich. Ich würde nur sagen, dass ich bei der Entwicklung objektorientierter PHP-Anwendungen für einzelne Seiten mehr Spaß habe, wenn ich weiß, dass ich das Ganze von Grund auf neu erstellen kann, ohne mir Gedanken über Namespace-Kollisionen machen zu müssen. Von Grund auf neu zu bauen ist etwas, was viele Menschen nicht mehr tun. Sie haben einen Job, eine Frist, einen Bonus oder einen Ruf, um den sie sich kümmern müssen. Diese Typen verwenden in der Regel so viel vorgefertigten Code mit hohen Einsätzen, dass sie nicht riskieren können, überhaupt globale Variablen zu verwenden.
Es mag schlecht sein, globale Variablen zu verwenden, auch wenn sie nur im globalen Bereich eines Programms verwendet werden. Vergessen wir jedoch nicht diejenigen, die einfach nur Spaß haben und etwas zum Laufen bringen möchten .
Wenn dies bedeutet, dass einige Variablen (<10) im globalen Namespace verwendet werden, werden diese nur im globalen Bereich eines Programms verwendet. Ja, ja, MVC, Abhängigkeitsinjektion, externer Code, bla, bla, bla, bla. Wenn Sie jedoch 99,99% Ihres Codes in Namespaces und Klassen enthalten haben und externer Code in einer Sandbox gespeichert ist, endet die Welt nicht (ich wiederhole, die Welt endet nicht), wenn Sie eine globale Variable verwenden.
Im Allgemeinen würde ich nicht sagen, dass die Verwendung globaler Variablen eine schlechte Praxis ist . Ich würde sagen, dass die Verwendung globaler Variablen (Flags und dergleichen) außerhalb des globalen Bereichs eines Programms Probleme bereitet und (auf lange Sicht) schlecht beraten ist, da Sie den Überblick über ihre Zustände ziemlich leicht verlieren können. Außerdem würde ich sagen, je mehr Sie lernen, desto weniger sind Sie auf globale Variablen angewiesen , da Sie die "Freude" erlebt haben, Fehler aufzuspüren, die mit ihrer Verwendung verbunden sind. Dies allein wird Sie dazu anregen, einen anderen Weg zu finden, um dasselbe Problem zu lösen. Zufälligerweise führt dies dazu, dass PHP-Benutzer lernen, wie man Namespaces und Klassen (statische Mitglieder usw.) verwendet.
Das Gebiet der Informatik ist riesig. Wenn wir alle davon abhalten, etwas zu tun, weil wir es als schlecht bezeichnen , verlieren sie den Spaß daran, die Gründe für das Etikett wirklich zu verstehen.
Verwenden Sie gegebenenfalls globale Variablen, aber prüfen Sie dann, ob Sie das Problem ohne sie lösen können. Kollisionen, Tests und Debugging bedeuten mehr, wenn Sie die wahre Natur des Problems genau verstehen, nicht nur eine Beschreibung des Problems.