Signatur
Beschreibung
enchant_broker_free_dict() gibt eine Wörterbuch-Instanz frei, die zuvor über den Enchant-Broker angefordert wurde. Dies schließt alle internen Ressourcen des Wörterbuchs, wie Wortlisten und Konfigurationsdaten, und gibt den belegten Speicher wieder frei.
Es empfiehlt sich, Wörterbücher nach ihrer Verwendung explizit freizugeben, insbesondere in lang laufenden Prozessen oder wenn viele Wörterbücher hintereinander geöffnet werden. So lässt sich unnötiger Speicherverbrauch vermeiden.
Seit PHP 8.0 arbeitet die Enchant-Erweiterung mit Objekten statt mit den veralteten Ressource-Typen. Das übergebene Argument ist daher ein EnchantDictionary-Objekt. In PHP 8.0+ wird beim Zerstören des Objekts der Speicher automatisch freigegeben; ein expliziter Aufruf dieser Funktion ist dennoch guter Stil, wenn das Wörterbuch nicht mehr benötigt wird.
Beachte, dass nach dem Aufruf dieser Funktion alle weiteren Operationen auf dem freigegebenen Wörterbuch-Objekt zu einem Fehler führen. Stelle sicher, dass das Wörterbuch nicht mehr referenziert oder verwendet wird, bevor du es freigibst.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $dictionary Pflicht | EnchantDictionary | Das EnchantDictionary-Objekt, das freigegeben werden soll. Es muss zuvor über enchant_broker_request_dict() oder enchant_broker_request_pwl_dict() erstellt worden sein. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler, z. B. wenn das übergebene Objekt kein gültiges Wörterbuch-Objekt ist.Beispiele
Wörterbuch anfordern, verwenden und wieder freigeben
<?php
// Broker erstellen
$broker = enchant_broker_init();
// Deutsches Wörterbuch anfordern
$dict = enchant_broker_request_dict($broker, 'de_DE');
if ($dict) {
// Wort auf korrekte Schreibweise prüfen
$word = 'Zeichenkette';
if (enchant_dict_check($dict, $word)) {
echo "'$word' ist korrekt geschrieben.\n";
} else {
echo "'$word' ist falsch geschrieben.\n";
$suggestions = enchant_dict_suggest($dict, $word);
echo 'Vorschläge: ' . implode(', ', $suggestions) . "\n";
}
// Wörterbuch freigeben, wenn nicht mehr benötigt
enchant_broker_free_dict($dict);
}
// Broker freigeben
enchant_broker_free($broker);
Mehrere Wörterbücher sequentiell freigeben
<?php
$broker = enchant_broker_init();
$languages = ['de_DE', 'en_US', 'fr_FR'];
$dicts = [];
foreach ($languages as $lang) {
if (enchant_broker_dict_exists($broker, $lang)) {
$dicts[$lang] = enchant_broker_request_dict($broker, $lang);
}
}
// Wörterbücher verwenden ...
foreach ($dicts as $lang => $dict) {
$result = enchant_dict_check($dict, 'Hallo');
echo "[$lang] 'Hallo' korrekt: " . ($result ? 'Ja' : 'Nein') . "\n";
}
// Alle Wörterbücher explizit freigeben
foreach ($dicts as $lang => $dict) {
enchant_broker_free_dict($dict);
echo "Wörterbuch '$lang' freigegeben.\n";
}
enchant_broker_free($broker);
// Wichtig · Fallstricke
Vor PHP 8.0 arbeitete die Enchant-Erweiterung mit Ressource-Typen (resource) statt mit EnchantDictionary-Objekten. Ab PHP 8.0 sind Ressourcen durch Objekte ersetzt worden. Der Funktionsname und die Verwendungsweise bleiben jedoch gleich.
Nach dem Aufruf von enchant_broker_free_dict() darf das freigegebene EnchantDictionary-Objekt nicht mehr für Enchant-Operationen genutzt werden, da dies zu Fehlern oder undefiniertem Verhalten führen kann. Setze die Variable anschließend auf null, um versehentliche Zugriffe zu verhindern.
Vergiss nicht, nach der Freigabe aller Wörterbücher auch den Broker selbst mit enchant_broker_free() zu schließen, um alle verbliebenen Ressourcen korrekt aufzuräumen.