Signatur
Beschreibung
resourcebundle_get_error_code() ist die prozedurale Variante von ResourceBundle::getErrorCode() und liefert den zuletzt aufgetretenen ICU-Fehlercode für das übergebene Ressourcenbündel-Objekt. ICU (International Components for Unicode) verwendet interne Fehlercodes, um den Zustand von Operationen zu beschreiben.
Typische Anwendungsfälle sind die Fehlerbehandlung nach dem Laden oder Zugreifen auf Ressourcen: Gibt die Funktion 0 (U_ZERO_ERROR) zurück, war die letzte Operation erfolgreich. Jeder andere Wert weist auf einen Fehler oder eine Warnung hin. Der zugehörige menschenlesbare Text kann über resourcebundle_get_error_message() abgerufen werden.
Die Funktion ist besonders nützlich, wenn ein Zugriff auf einen nicht vorhandenen Schlüssel oder ein fehlendes Gebietsschema (Locale) erfolgt ist und resourcebundle_get() null zurückgegeben hat. In diesem Fall hilft der Fehlercode dabei zu unterscheiden, ob der Wert wirklich fehlt oder ob ein anderes Problem vorliegt.
- Rückgabewert
0: kein Fehler (U_ZERO_ERROR) - Positive Werte: Warnungen (Operation wurde fortgesetzt)
- Negative Werte: Fehler (Operation abgebrochen)
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $bundle Pflicht | ResourceBundle | Das ResourceBundle-Objekt, dessen letzter Fehlercode abgefragt werden soll. |
Rückgabewert
0 bedeutet Erfolg (U_ZERO_ERROR), positive Werte stehen für Warnungen und negative Werte für Fehler.Beispiele
Fehlercode nach erfolgreichem Zugriff prüfen
<?php
$bundle = resourcebundle_create('de', '/usr/share/php/icu-data');
$value = resourcebundle_get($bundle, 'ExistingKey');
$errorCode = resourcebundle_get_error_code($bundle);
if ($errorCode === 0) {
echo "Kein Fehler, Wert: " . $value . PHP_EOL;
} else {
echo "Fehlercode: " . $errorCode . PHP_EOL;
echo "Fehlermeldung: " . resourcebundle_get_error_message($bundle) . PHP_EOL;
}
Fehlererkennung bei fehlendem Schlüssel
<?php
$bundle = resourcebundle_create('de_DE', null, true);
// Zugriff auf einen nicht vorhandenen Schlüssel
$value = resourcebundle_get($bundle, 'NichtVorhandenerSchluessel');
$errorCode = resourcebundle_get_error_code($bundle);
if ($value === null && $errorCode !== 0) {
echo "Schlüssel nicht gefunden." . PHP_EOL;
echo "ICU-Fehlercode: " . $errorCode . PHP_EOL;
echo "Fehlermeldung: " . resourcebundle_get_error_message($bundle) . PHP_EOL;
} else {
echo "Wert: " . $value . PHP_EOL;
}
// Wichtig · Fallstricke
Der Fehlercode wird intern von ICU verwaltet und entspricht den ICU-Konstanten wie U_ZERO_ERROR, U_MISSING_RESOURCE_ERROR usw. PHP stellt diese Konstanten nicht direkt zur Verfügung – es empfiehlt sich daher, den Wert 0 als Erfolgsindikator zu verwenden und bei jedem anderen Wert die Nachricht über resourcebundle_get_error_message() zu lesen.
Diese Funktion entspricht exakt ResourceBundle::getErrorCode() – beide Varianten sind austauschbar und liefern identische Ergebnisse.