1UnitedPower: Globale Variablen

Beitrag lesen

Hakuna matata!

Deine config.php kann auch ein array zurückgeben, schön kompakt und an beliebiger Stelle abrufbar, ebenda, wo es grad gebraucht wird ($cfg = require 'config.php';).

Schon - aber in wiefern soll das besser sein, das Array immer wieder per require einzubinden, als die Werte einmal ins GLOBALS-Array zu werfen und dann zu verwenden? Das ist doch eigentlich - wie heißt es so schön im Schwäbischen - g'hupft wie g'sprunga.

Der globale Gültigkeitsbreich wird nicht zugemüllt und das macht Kollisionen mit anderen Code-Fragmenten unwahrscheinlich. Insbesondere mit so generischen Variablennamen wie $cfg oder $config sind Namenskollisionen vorprogrammiert.

In PHP würde ich dem Problem aber eher mit Namespaces begegnen, als mit der Lösung, die hotti hier unterbreitet. Aber beides dürfte besser sein, als das Vogelstrauß-Prinzip.

Globale Variablen liefern zudem immer nur eine sehr kurzsichtige Lösung, auf das Problem, dass es zu bewältigen gilt. Ich habe immer wieder die Erfahrung gemacht, dass eine globale Variable, die bei ihrer Einführung irgendwann mal zweckmäßig erschien, in späteren Entwicklungsphasen zu einem Problem geworden ist. Als klassisches Beispiel: Man sieht häufig, dass der gesamte Datenbank-Verkehr eines PHP-Programms über eine globale Variable oder ein Singelton-Objekt abgewickelt wird. Später steht man vor der Aufgabe einen Datenabgleich mit einer zweiten Datenbank zu machen, dann steht man plötzlich vor dem Problem, wie man mit den zwei Datenbank-Verbindungen umgehen kann, ohne das ganze Programm umzustricken.

Vorausschauende Software-Entwicklung ist ein schwieriges Thema und man kann sich schnell darin verlieren. Aber im Falle von globalen Variablen gibt es viele verhätlnismäßig einfache Lösungen, die sich mit hoher Wahscheinlichkeit bezahlt machen werden.

Und ich bin noch nie auf ein Problem gestoßen, dass sich ohne globale Variablen nicht genauso simpel lösen ließ.

--
“All right, then, I'll go to hell.” – Huck Finn