Zurück zur Übersicht

Nervige Notices oder: wie uns PHP zur Sorgfalt erzieht.

Laut PHP-Handbuch ist das Initialisieren von Variablen nicht zwingend notwendig, „es wird aber trotzdem empfohlen.“ (siehe http://www.php.net/manual/de/language.variables.basics.php). Manche Pluginentwickler im WordPress-Umfeld scheinen das so auszulegen, dass man sich die Mühe im Grunde genommen sparen kann – das Skript tut ja auch so, was es soll.

Das Resultat ist in vielen Fällen, dass Entwickler, die mit einer höheren Fehlerbenachrichtigung arbeiten, den ganzen Bildschirm mit PHP-Meldungen zugepflastert bekommen:

Das sieht nicht nur unschön aus und verändert das Layout einer Seite, es wirkt sich auch nachteilig auf die Konzentration aus. Doch zugegebenermaßen kann es ebenfalls recht anstrengend sein, PHP-Variablen bei jeder Verwendung erst zu prüfen:

Das ist eine Menge Schreibarbeit, nur um herauszubekommen, ob $_REQUEST[ ‚text‘ ] bereits definiert wurde und wenn nicht, mit einem Standardwert zu belegen.

Natürlich könnte man die Prüfung auch in einer anderen Schreibweise notieren:

Doch am Ende bleibt es dabei: PHP Notices zu verhindern führt zu einer Menge Schreibarbeit. Dennoch ist es vorzuziehen:

„Es ist problematisch sich auf den Vorgabewert einer nicht initialisierten Variable zu verlassen wenn Sie Dateien inkludieren die die gleichen Variablennamen benutzen. Wenn register_globals aktiviert ist führt dies zu einem extremen Sicherheitsproblem. Bei Zugriffen auf nicht initialisierte Variablen wird ein Fehler der Stufe E_NOTICE ausgegeben, dies trifft allerdings nicht auf das Anfügen von Elementen an nicht initialisierte Arrays zu.“ (siehe erneut http://www.php.net/manual/de/language.variables.basics.php)

Und nicht zuletzt ist es einfach eine saubere Art, mit Variablen zu arbeiten.

Um mir das Leben zu erleichtern, habe ich ein Funktion geschrieben, die das Initialisieren einer Variablen übernimmt und ggfs. mit einem Standardwert belegt:

Ein Formularfeld kann man nun beispielsweise folgendermaßen vorbelegen:

Die ist bedeutend schneller notiert, verhindert Notices, belegt die Variable mit einem Standardwert, falls sie nicht definiert ist, und stört einem nicht im „Fluss“ des Schreibens.

 

 

Schreibe einen Kommentar