Signatur
Beschreibung
intl_get_error_code() liefert den Fehlercode, der bei der letzten Operation der Internationalisierungs-Erweiterung (Intl) aufgetreten ist. Dieser Code entspricht den ICU-eigenen Fehlercodes und ermöglicht eine detaillierte Fehlerauswertung nach dem Einsatz von Klassen wie Collator, NumberFormatter, MessageFormatter oder IntlDateFormatter.
Der zurückgegebene Integer-Wert kann zusammen mit intl_error_name() in einen menschenlesbaren Namen umgewandelt werden. Ein Rückgabewert von 0 entspricht U_ZERO_ERROR und zeigt an, dass kein Fehler aufgetreten ist. Positive Werte signalisieren Fehler, während negative Werte auf Warnungen hinweisen können.
Diese Funktion ist besonders nützlich in Anwendungen, die intensive Lokalisierung und Internationalisierung betreiben, da Intl-Klassen oft keine PHP-Ausnahmen werfen, sondern Fehlerdetails intern speichern, die anschließend über diese Funktion abgefragt werden müssen.
Im Gegensatz zu objektspezifischen Methoden wie Collator::getErrorCode() bezieht sich intl_get_error_code() auf den globalen Fehlerstatus der Intl-Erweiterung und ist nicht an eine bestimmte Objektinstanz gebunden.
Rückgabewert
0 (U_ZERO_ERROR) bedeutet, dass kein Fehler aufgetreten ist. Positive Werte stehen für Fehler, negative für Warnungen.Beispiele
Fehlerprüfung nach einer Collator-Operation
<?php
$collator = new Collator('de_DE');
$result = $collator->compare('Apfel', 'Banane');
$errorCode = intl_get_error_code();
if ($errorCode !== 0) {
echo 'Fehlercode: ' . $errorCode . PHP_EOL;
echo 'Fehlername: ' . intl_error_name($errorCode) . PHP_EOL;
} else {
echo 'Vergleich erfolgreich, Ergebnis: ' . $result . PHP_EOL;
}
Fehlerbehandlung bei ungültigem Locale
<?php
$formatter = new NumberFormatter('ungueltig_LOCALE_XY', NumberFormatter::DECIMAL);
$errorCode = intl_get_error_code();
if ($errorCode !== 0) {
echo 'Intl-Fehlercode: ' . $errorCode . PHP_EOL;
echo 'Fehlername: ' . intl_error_name($errorCode) . PHP_EOL;
echo 'Fehlermeldung: ' . intl_get_error_message() . PHP_EOL;
} else {
echo 'Formatter erstellt.' . PHP_EOL;
}
// Wichtig · Fallstricke
Wichtig: Der globale Fehlerstatus wird bei jeder neuen Intl-Operation überschrieben. Es empfiehlt sich daher, den Fehlercode unmittelbar nach der zu prüfenden Operation abzufragen und nicht erst später im Programmfluss.
Für objektgebundene Fehlerprüfungen sollten klassenspezifische Methoden wie Collator::getErrorCode() oder NumberFormatter::getErrorCode() bevorzugt werden, da diese den Fehlerstatus des jeweiligen Objekts zuverlässiger widerspiegeln.
Die genauen Fehlercodes und ihre Bedeutungen sind in der ICU-Dokumentation beschrieben.