PHP Superglobals "global"

php super global variables

PHP Superglobals "global"

In meiner langen Erfahrung habe ich so viele Programme gesehen, die das "global"-Schlüsselwort verwendet wurden.

Ein paar typische Beispiele sind "global $options;", "global $c", "global $C", "global $b", "global $a", "global $_AUTH", "global $username", "global $password", "global $db" oder "global $_PDO".

Oh mein Gott "global $c" und "global $C"!!!

Verwenden Sie bitte keine globalen Variablen, so einfach ist das.

Warum nicht Globals verwenden?

Denn die Verwendung von Globals erschwert die langfristige Pflege der Software.

  • Ein globales Element kann an einer beliebigen Stelle im Code deklariert werden oder auch gar nicht. Daher gibt es keinen Ort, an dem Sie instinktiv nach Kommentaren darüber suchen können, wofür das globale Element verwendet wird
  • Beim Lesen von Code gehen Sie normalerweise davon aus, dass Variablen lokal für die Funktion sind, und verstehen nicht, dass die Änderung des Werts einer Funktion eine systemweite Änderung nach sich ziehen kann.
  • Wenn sie nicht mit Eingaben umgehen, sollten Funktionen den gleichen Wert / die gleiche Ausgabe zurückgeben, wenn sie mit denselben Parametern aufgerufen werden. Die Verwendung von Globals in einer Funktion führt zusätzliche Parameter ein, die nicht in der Funktionsdeklaration enthalten sind.
  • Globals haben kein spezielles Initialisierungskonstrukt. Daher können Sie nie sicher sein, wann Sie auf den Wert des Globals zugreifen können. Wenn Sie vor der Initialisierung versuchen, auf das Globale zuzugreifen, erhalten Sie keine Fehler.
  • Jemand anderes (möglicherweise ein Plugin) verwendet möglicherweise Globals mit demselben Namen, wodurch der Code beschädigt wird oder Sie den Code je nach Initialisierungsreihenfolge ruinieren.
  • Wie wenn Sie vergessen, dass Sie eine Variable aus dem globalen Gültigkeitsbereich in Ihre Funktion aufgerufen haben, diese bearbeiten und vergessen, dass Sie mit einer globalen Variablen arbeiten. Es ist ziemlich schwer zu vergessen, dass Sie mit einer globalen Variablen arbeiten, wenn Sie das magische $GLOBALS-Array verwenden.