de.comp.lang.php.* FAQ

28.15. Notice: Use of undefined constant ...

Antwort von Johannes Frömter

Es wird eine Konstante verwendet, obwohl diese nicht definiert ist. Aus purer Freundlichkeit nimmt PHP den Namen der Konstante (!) als eigentlich gemeinten Wert an, belässt es bei einem Hinweis und lässt das Script weiterlaufen. Häufig wird dieser Fehler beim Zugriff auf Arrays gemacht, indem der Schlüssel direkt in eckigen Klammern steht, statt korrekt in Anführungszeichen eingefasst zu werden:

$array[key]     // Falsch, wenn key keine Konstante ist
$array["key"]   // So war es gemeint
$array['key']   // Besser, da nichts ausgewertet werden muss
$array[12]      // Richtig, Zahlen als Key ohne Anführungszeichen

$array[$key]    // Ok: Zugriff per Variable
$array["$key"]  // Hier sind die Anführungszeichen unnötig
$array['$key']  // Falsch, Variable wird nicht ausgewertet

"$array[key]"   // Korrekt (!), da innerhalb eines Strings
"$array[$key]"  // Korrekt
"$array['key']" // Parse error!

In neueren PHP-Versionen ist der Error reporting level defaultmäßig so eingestellt, dass eine Warnung ausgegeben wird. Das Script sollte unbedingt nachgebessert werden. Es ist zwar auch möglich, PHP auf einen niedrigeren Error reporting level zu konfigurieren (error_reporting = E_ALL & ~E_NOTICE;), aber das ist auf Dauer nicht empfehlenswert, da es nur die Ausgabe der Warnung unterdrückt, nicht aber die eigentliche Ursache des Problems beseitigt (außerdem dauert der Arrayzugriff ca. 4-5 mal länger!).

Valid HTML 4.01! Valid CSS!

28.15. Notice: Use of undefined constant ...
http://www.php-faq.de/q/q-fehler-konstante.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team