Bei der PHP -Programmierung wird die definierte () -Funktion verwendet, um festzustellen, ob eine Konstante definiert wurde. Normalerweise sollte definiert () falsch zurückkehren, wenn die Konstante undefiniert, ansonsten wahr ist. Manchmal können Entwickler auf eine Ausnahme stoßen: Defined () Fehler gibt bei der Beurteilung einer undefinierten Konstante ein , was Verwirrung in der Programmlogik verursacht und es schwierig macht, Fehler zu beheben.
In diesem Artikel werden die möglichen Ursachen dieses Phänomens untersucht und mehrere wirksame Lösungen liefern.
Beispiel für PHP -Code:
<?php
if (defined('MY_CONST')) {
echo "MY_CONST Definiert";
} else {
echo "MY_CONST Undefiniert";
}
?>
Unter normalen Umständen sollte der obige Code "my_const undefined" ausgeben, wenn my_const nicht definiert ist. In einigen Umgebungen oder in bestimmten Codekontexten wird definiert ('my_const') jedoch unerwartet wahr zurückgeführt, was so falsch einschätzt, dass die Konstante definiert wurde.
Manchmal kann eine Konstante im Programm versehentlich definiert werden, aber es gibt Unterschiede in den Fällen von Namensräumen, Groß- und Kleinbuchstaben. Konstante Namen in PHP sind Fallempfindlichkeit. Wenn Ihr Urteilsvermögen mit der Definition nicht stimmt, kann dies zu Fehleinschätzungen führen.
Einige Frameworks oder Erweiterungen können Konstanten dynamisch definieren oder magische Methoden verwenden, um beim Zugriff auf undefinierte Konstanten automatisch zu erstellen. In diesem Fall definiert () true zurück.
Verschiedene Versionen von PHP können sich im konstanten Verarbeitungsmechanismus unterscheiden, und einige ältere Versionen oder spezifische Konfigurationen können definiert () sich abnormal verhalten.
Verwenden Sie zuerst defined (), um zu beurteilen, und verwenden Sie dann Constant (), um den Wert zu erhalten. Wenn eine Ausnahme eintritt, wird sie als undefiniert angesehen:
<?php
function is_constant_defined($name) {
if (!defined($name)) {
return false;
}
try {
constant($name);
return true;
} catch (Error $e) {
return false;
}
}
if (is_constant_defined('MY_CONST')) {
echo "MY_CONST Definiert";
} else {
echo "MY_CONST Undefiniert";
}
?>
Stellen Sie sicher, dass es keine Logik gibt, die beim Zugriff auf undefinierte Konstanten automatisch definiert wird. Deaktivieren oder überschreiben Sie die Logik bei Bedarf.
Die neueste Version von PHP behebt viele ständige Fehler, und das Upgrade der PHP-Umgebung kann dazu beitragen, solche Probleme zu vermeiden.
Drucken Sie alle definierten Konstanten zum Anzeigen: print_r (get_defined_constants (true));
Reinigen Sie den Cache vor der Beurteilung (wenn der Cache -Mechanismus verwendet wird)
Verwenden Sie definierte ('my_const') === true anstelle von einfachem Urteilsvermögen, um die Verwirrung von Typen zu vermeiden
Der von defined () zurückgegebene Fehler, der true zurückgegeben wird, wird normalerweise durch eine Umgebung oder eine Code -Logikausnahme verursacht. Durch die Kombination der oben genannten Lösungen können Entwickler aus verschiedenen Aspekten wie Codespezifikationen, Umgebungsaufrüstungen, Fehleraufnahmen usw. überprüfen, um die Genauigkeit des ständigen Urteils zu gewährleisten.