Start · Sprachen · PHP · Referenz · intlcal_get_error_code

intlcal_get_error_code

Funktion

Gibt den letzten ICU-Fehlercode des <code>IntlCalendar</code>-Objekts zurück.

seit PHP 5.5.0 Kategorie: string

Signatur

intlcal_get_error_code(IntlCalendar $calendar): int

Beschreibung

intlcal_get_error_code() liefert den letzten intern gespeicherten ICU-Fehlercode eines IntlCalendar-Objekts. Jede Operation auf dem Kalender-Objekt kann intern einen Fehler- oder Statuscode setzen; diese Funktion erlaubt es, nach einer Operation zu prüfen, ob ein Fehler aufgetreten ist.

Die zurückgegebenen Codes sind ICU-Statuscodes (vom Typ UErrorCode). Werte kleiner als 0 stehen für Fehler, der Wert 0 (U_ZERO_ERROR) bedeutet Erfolg, und positive Werte können Warnungen anzeigen. Mit der Funktion intl_is_failure() lässt sich prüfen, ob es sich um einen echten Fehler handelt.

Die prozedurale Variante erwartet ein IntlCalendar-Objekt als Parameter; alternativ kann die Methode IntlCalendar::getErrorCode() direkt auf dem Objekt aufgerufen werden.

Typische Einsatzfälle sind die Fehlerbehandlung nach Datumsberechnungen, Zeitzonenoperationen oder beim Verarbeiten von Kalenderdaten in internationalisierten Anwendungen.

Parameter

Name Typ Default Beschreibung
$calendar Pflicht IntlCalendar Das IntlCalendar-Objekt, dessen letzter Fehlercode abgefragt werden soll.

Rückgabewert

Typ
int
Beschreibung
Gibt den letzten ICU-Fehlercode als Integer zurück. 0 entspricht U_ZERO_ERROR (kein Fehler), negative Werte zeigen Fehler an, positive Werte können Warnungen darstellen.

Beispiele

Fehlercode nach einer Kalenderoperation prüfen

<?php
$cal = IntlCalendar::createInstance('Europe/Berlin', 'de_DE');

// Eine Datumsoperation ausführen
$cal->set(2024, 1, 30); // 30. Februar (ungültig, wird aber toleriert)

$errorCode = intlcal_get_error_code($cal);

if (intl_is_failure($errorCode)) {
    echo 'Fehler aufgetreten: ' . intl_error_name($errorCode) . PHP_EOL;
} else {
    echo 'Kein Fehler. Code: ' . $errorCode . ' (' . intl_error_name($errorCode) . ')' . PHP_EOL;
}

// Zeitstempel ausgeben (Kalender korrigiert automatisch)
echo 'Timestamp: ' . $cal->toDateTime()->format('Y-m-d') . PHP_EOL;
Kein Fehler. Code: 0 (U_ZERO_ERROR) Timestamp: 2024-03-01

OOP-Stil und prozeduraler Stil im Vergleich

<?php
$cal = IntlCalendar::createInstance('UTC', 'en_US');

// Prozeduraler Stil
$codeProc = intlcal_get_error_code($cal);
echo 'Prozedural – Fehlercode: ' . $codeProc . PHP_EOL;

// OOP-Stil
$codeOop = $cal->getErrorCode();
echo 'OOP       – Fehlercode: ' . $codeOop . PHP_EOL;

// Fehlernamen ausgeben
echo 'Fehlername: ' . intl_error_name($codeOop) . PHP_EOL;
Prozedural – Fehlercode: 0 OOP – Fehlercode: 0 Fehlername: U_ZERO_ERROR

// Wichtig · Fallstricke

Der gespeicherte Fehlercode wird durch jede neue Operation auf dem IntlCalendar-Objekt überschrieben. Es empfiehlt sich daher, den Fehlercode unmittelbar nach der zu prüfenden Operation abzufragen.

Für eine lesbare Fehlerbeschreibung kann intlcal_get_error_message() bzw. IntlCalendar::getErrorMessage() verwendet werden, die den Fehlercode als Text zurückgibt.

Falls kein gültiges IntlCalendar-Objekt übergeben wird, gibt die Funktion false zurück und erzeugt eine PHP-Warnung.