Signatur
Beschreibung
datefmt_get_error_code() ist die prozedurale Variante von IntlDateFormatter::getErrorCode() und liefert den ICU-Fehlercode, der bei der zuletzt ausgeführten Operation des übergebenen Formatierungs-Objekts aufgetreten ist. Dies ist besonders nützlich, um nach einem Aufruf von datefmt_format() oder datefmt_parse() zu prüfen, ob ein Fehler aufgetreten ist.
Die zurückgegebenen Fehlercodes stammen aus der ICU-Bibliothek und können mit der Funktion intl_error_name() in einen menschenlesbaren Namen umgewandelt werden. Ein Rückgabewert von U_ZERO_ERROR (0) bedeutet, dass kein Fehler aufgetreten ist.
Im Gegensatz zu PHP-eigenen Fehlerprüfungen über error_get_last() ist diese Funktion spezifisch für den ICU/Intl-Erweiterungsbereich konzipiert. Sie sollte immer dann eingesetzt werden, wenn präzise Fehlerinformationen für Datums-Formatierungsoperationen benötigt werden, beispielsweise bei der Validierung von Benutzereingaben aus verschiedenen Sprachregionen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $formatter Pflicht | IntlDateFormatter | Das IntlDateFormatter-Objekt, dessen letzter Fehlercode abgefragt werden soll. |
Rückgabewert
int zurück. Der Wert 0 entspricht U_ZERO_ERROR und zeigt an, dass kein Fehler aufgetreten ist. Alle anderen Werte weisen auf einen spezifischen ICU-Fehler hin.Beispiele
Fehlerprüfung nach datefmt_parse()
<?php
$fmt = datefmt_create(
'de_DE',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'Europe/Berlin',
IntlDateFormatter::GREGORIAN
);
// Einen ungültigen Datums-String parsen
$result = datefmt_parse($fmt, 'kein gültiges Datum');
$errorCode = datefmt_get_error_code($fmt);
$errorName = intl_error_name($errorCode);
if ($errorCode !== 0) {
echo "Fehlercode: " . $errorCode . PHP_EOL;
echo "Fehlername: " . $errorName . PHP_EOL;
} else {
echo "Kein Fehler aufgetreten." . PHP_EOL;
}
Erfolgreiche Formatierung – kein Fehler
<?php
$fmt = datefmt_create(
'de_DE',
IntlDateFormatter::LONG,
IntlDateFormatter::NONE,
'Europe/Berlin',
IntlDateFormatter::GREGORIAN
);
$formatted = datefmt_format($fmt, mktime(12, 0, 0, 6, 15, 2023));
$errorCode = datefmt_get_error_code($fmt);
if ($errorCode === 0) {
echo "Formatierung erfolgreich: " . $formatted . PHP_EOL;
echo "Fehlercode: " . $errorCode . " (" . intl_error_name($errorCode) . ")" . PHP_EOL;
} else {
echo "Fehler aufgetreten: " . intl_error_name($errorCode) . PHP_EOL;
}
// Wichtig · Fallstricke
Hinweis: Der Fehlercode wird bei jeder Operation überschrieben. Er bezieht sich immer auf die zuletzt ausgeführte Operation des Objekts. Zwischen der Operation und dem Aufruf von datefmt_get_error_code() sollten daher keine weiteren Operationen auf demselben Objekt durchgeführt werden.
Zur Umwandlung des Fehlercodes in einen lesbaren Text stehen intl_error_name() sowie datefmt_get_error_message() zur Verfügung. Letztere liefert zusätzlich eine detailliertere Fehlermeldung als Zeichenkette.