Start · Sprachen · PHP · Referenz · datefmt_get_error_code

datefmt_get_error_code

Funktion

Gibt den Fehlercode der letzten Operation des angegebenen <code>IntlDateFormatter</code>-Objekts zurück.

seit PHP 5.3.0 Kategorie: string

Signatur

datefmt_get_error_code(IntlDateFormatter $formatter): int

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

Typ
int
Beschreibung
Gibt den ICU-Fehlercode als 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;
}
Fehlercode: 9 Fehlername: U_PARSE_ERROR

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;
}
Formatierung erfolgreich: 15. Juni 2023 Fehlercode: 0 (U_ZERO_ERROR)

// 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.