Bei Stackoverflow tritt dieses Problem immer wieder auf:
- E_NOTICE? == E_DEBUG, um isset () und @ mit einem komplexeren error_handler zu vermeiden
- Wie kann man PHP so einstellen, dass der Undefind-Index für $ _GET nicht überprüft wird, wenn E_NOTICE aktiviert ist?
- So verhindern Sie, dass PHP PHP Notice-Fehler protokolliert
- Wie schalte ich solche PHP 5.3-Hinweise aus?
Sogar Pekka (der viele solide PHP-Ratschläge bietet) ist gegen das gefürchtete E_NOTICE
Monster gestoßen und hat sich eine bessere Lösung erhofft als die Verwendung von isset()
: isset () und empty () machen Code hässlich
Persönlich verwalte ich isset()
und empty()
an vielen Stellen den Fluss meiner Anwendungen. Beispielsweise:
public function do_something($optional_parameter = NULL) {
if (!empty($optional_parameter)) {
// do optional stuff with the contents of $optional_parameter
}
// do mandatory stuff
}
Sogar ein einfaches Snippet wie dieses:
if (!isset($_REQUEST['form_var'])) {
// something's missing, do something about it.
}
scheint mir sehr logisch. Es sieht nicht nach Aufblähen aus, es sieht aus wie stabiler Code. Aber viele Entwickler starten ihre Anwendungen mit E_NOTICE
aktivierten, entdecken eine Menge frustrierender "nicht initialisierter Array-Index" -Nachrichten und verziehen dann das Gesicht, wenn sie nach definierten Variablen suchen und ihren Code mit "verunreinigen" isset()
.
Ich gehe davon aus, dass andere Sprachen die Dinge anders angehen. Aus Erfahrung ist JavaScript nicht so höflich wie PHP. Eine undefinierte Variable stoppt normalerweise die Ausführung des Skripts. Auch (gesprochen von Unerfahrenheit ) Ich bin sicher , dass Sprachen wie C / C ++ würde einfach zu kompilieren verweigern.
Sind PHP-Entwickler nur faul? (Ich spreche nicht von Ihnen, Pekka. Ich weiß, dass Sie eine alte Anwendung überarbeitet haben.) Oder behandeln andere Sprachen undefinierte Variablen eleganter, als wenn der Programmierer zuerst überprüfen muss, ob sie definiert sind?
(Ich weiß, dass es E_NOTICE
neben undefinierten Variablen noch andere Meldungen gibt , aber diese scheinen die ärgerlichsten zu sein.)
Nachtrag
Aus den bisherigen Antworten geht hervor, dass ich nicht der einzige bin, der denkt, dass isset()
Code nicht aufgebläht ist. Ich frage mich jetzt, ob es Probleme mit Programmierern in anderen Sprachen gibt, die diese wiederholen. Oder ist das nur eine Frage der PHP-Kultur?