Signatur
Beschreibung
msgfmt_get_error_message() ist die prozedurale Variante der Methode MessageFormatter::getErrorMessage() und liefert eine menschenlesbare Fehlerbeschreibung, die bei der letzten Operation des angegebenen MessageFormatter-Objekts aufgetreten ist. Wenn kein Fehler aufgetreten ist, wird typischerweise "U_ZERO_ERROR" zurückgegeben.
Die Funktion ist besonders nützlich in Kombination mit msgfmt_get_error_code(), um nach fehlgeschlagenen Formatierungs- oder Parsing-Operationen eine detaillierte Diagnose zu erstellen. Während msgfmt_get_error_code() den numerischen ICU-Fehlercode liefert, gibt msgfmt_get_error_message() eine sprechende Klartextbeschreibung zurück, die für Logging oder Debugging besser geeignet ist.
Typische Einsatzszenarien sind die Fehlerbehandlung nach msgfmt_format() oder msgfmt_parse(), wenn diese false zurückgeben und der genaue Fehlergrund ermittelt werden soll. Die Fehlermeldungen stammen aus der zugrunde liegenden ICU-Bibliothek und sind auf Englisch.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $formatter Pflicht | MessageFormatter | Das MessageFormatter-Objekt, dessen letzter Fehlerzustand abgefragt werden soll. |
Rückgabewert
"U_ZERO_ERROR" zurückgegeben.Beispiele
Fehlertext nach fehlgeschlagener Formatierung ausgeben
<?php
// Formatter mit gültigem Pattern erstellen
$fmt = msgfmt_create('de_DE', '{0, number} {1}');
// Falsches Argument übergeben (String statt Zahl erwartet)
$result = msgfmt_format($fmt, ['kein_number_wert_als_array_key' => 'test']);
if ($result === false) {
$errorCode = msgfmt_get_error_code($fmt);
$errorMessage = msgfmt_get_error_message($fmt);
echo "Fehlercode: $errorCode\n";
echo "Fehlermeldung: $errorMessage\n";
} else {
echo $result;
}
Fehlertext nach ungültigem Pattern abfragen
<?php
// Ungültiges Message-Pattern erzeugt beim Erstellen einen Fehler
$fmt = msgfmt_create('de_DE', '{0, UNGUELTIGERTYP}');
if ($fmt === false) {
// Kein Objekt verfügbar, daher statische Variante nutzen
echo 'MessageFormatter konnte nicht erstellt werden.' . PHP_EOL;
} else {
// Formatierung versuchen
$result = msgfmt_format($fmt, [42]);
if ($result === false) {
echo 'Formatierung fehlgeschlagen.' . PHP_EOL;
echo 'Fehlermeldung: ' . msgfmt_get_error_message($fmt) . PHP_EOL;
echo 'Fehlercode: ' . msgfmt_get_error_code($fmt) . PHP_EOL;
} else {
echo $result . PHP_EOL;
}
}
// Wichtig · Fallstricke
Die Fehlermeldungen stammen direkt aus der ICU-Bibliothek (International Components for Unicode) und sind immer auf Englisch, unabhängig vom eingestellten Locale des Formatters.
Wenn msgfmt_create() fehlschlägt und false zurückgibt, steht kein Formatter-Objekt zur Verfügung, weshalb msgfmt_get_error_message() nicht aufgerufen werden kann. In diesem Fall kann intl_get_error_message() genutzt werden, um den globalen ICU-Fehlerstatus abzufragen.
Diese Funktion kann alternativ als Methode MessageFormatter::getErrorMessage() objektorientiert aufgerufen werden.