Signatur
Beschreibung
enchant_dict_get_error liefert den zuletzt aufgetretenen Fehler einer aktiven Enchant-Wörterbuch-Sitzung zurück. Dies ist nützlich, um nach fehlgeschlagenen Wörterbuch-Operationen (z. B. nach einem fehlerhaften Suggestionaufruf oder nach einem Lernvorgang) eine aussagekräftige Fehlermeldung anzuzeigen oder zu protokollieren.
Die Funktion gehört zur Enchant-Erweiterung, die als Abstraktionsschicht über verschiedene Rechtschreibprüfungs-Backends (Aspell, Hunspell, Nuspell u. a.) fungiert. Fehler, die auf Backend-Ebene entstehen, werden über diese Funktion zugänglich gemacht.
Typischerweise wird enchant_dict_get_error in Kombination mit anderen enchant_dict_*-Funktionen verwendet: Nach jeder potenziell fehlbehafteten Operation prüft man, ob ein Fehlerzustand vorliegt, und ruft dann diese Funktion auf, um Details zu erhalten.
Gibt es keinen aufgezeichneten Fehler, kann die Funktion false oder einen leeren String zurückliefern – das genaue Verhalten hängt vom verwendeten Backend ab. In PHP 8.0 wurde der Parameter-Typ auf das Objekt EnchantDictionary angehoben (zuvor war es eine resource).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $dictionary Pflicht | EnchantDictionary | Ein gültiges EnchantDictionary-Objekt, das zuvor mit enchant_broker_request_dict oder enchant_broker_request_pwl_dict erzeugt wurde. |
Rückgabewert
false zurückgegeben.Beispiele
Fehlerdiagnose nach einem Wörterbuch-Vorgang
<?php
$broker = enchant_broker_init();
// Ein Wörterbuch für Deutsch anfordern
$dict = enchant_broker_request_dict($broker, 'de_DE');
if (!$dict) {
echo 'Wörterbuch konnte nicht geladen werden: ' . enchant_broker_get_error($broker);
exit;
}
// Ein unbekanntes Wort prüfen
$word = 'Beispielwrt';
if (!enchant_dict_check($dict, $word)) {
echo '"' . $word . '" ist falsch geschrieben.' . PHP_EOL;
// Fehler der Wörterbuch-Sitzung abfragen
$error = enchant_dict_get_error($dict);
if ($error !== false && $error !== '') {
echo 'Letzter Sitzungsfehler: ' . $error . PHP_EOL;
} else {
echo 'Kein Sitzungsfehler aufgezeichnet.' . PHP_EOL;
}
// Vorschläge ausgeben
$suggestions = enchant_dict_suggest($dict, $word);
echo 'Vorschläge: ' . implode(', ', $suggestions) . PHP_EOL;
}
enchant_broker_free($broker);
Fehlerbehandlung beim Hinzufügen zu einem persönlichen Wörterbuch
<?php
$broker = enchant_broker_init();
$pwlFile = '/tmp/mein_woerterbuch.pwl';
$dict = enchant_broker_request_pwl_dict($broker, $pwlFile);
if ($dict) {
// Wort zum persönlichen Wörterbuch hinzufügen
enchant_dict_add($dict, 'PHP-Entwickler');
$error = enchant_dict_get_error($dict);
if ($error !== false && $error !== '') {
echo 'Fehler beim Hinzufügen: ' . $error . PHP_EOL;
} else {
echo 'Wort erfolgreich hinzugefügt (kein Fehler).' . PHP_EOL;
}
} else {
echo 'PWL-Wörterbuch konnte nicht erstellt werden.' . PHP_EOL;
}
enchant_broker_free($broker);
// Wichtig · Fallstricke
Ressource vs. Objekt: Bis PHP 7.x wurde das Wörterbuch als resource übergeben. Ab PHP 8.0 wird ausschließlich das EnchantDictionary-Objekt akzeptiert. Code, der noch mit Ressourcen arbeitet, muss angepasst werden.
Backend-Abhängigkeit: Ob und welche Fehlermeldungen zurückgeliefert werden, hängt stark vom zugrunde liegenden Rechtschreibprüfungs-Backend ab. Nicht alle Backends befüllen den internen Fehlerpuffer zuverlässig, weshalb ein leeres Ergebnis nicht zwingend bedeutet, dass alles in Ordnung ist.
Abgrenzung: enchant_dict_get_error liefert Fehler auf Wörterbuch-Ebene; für Fehler auf Broker-Ebene (z. B. beim Initialisieren oder Anfordern eines Wörterbuchs) sollte stattdessen enchant_broker_get_error verwendet werden.