Start · Sprachen · PHP · Referenz · enchant_broker_free

enchant_broker_free

Funktion

Gibt einen Enchant-Broker und alle zugehörigen Wörterbücher frei und schließt damit alle belegten Ressourcen.

seit PHP 5.3.0 Kategorie: string

Signatur

enchant_broker_free(EnchantBroker $broker): bool

Beschreibung

enchant_broker_free() gibt eine zuvor mit enchant_broker_init() erstellte Broker-Ressource vollständig frei. Dabei werden auch alle Wörterbücher, die über diesen Broker geladen wurden, geschlossen und deren Speicher freigegeben.

Die Funktion ist vergleichbar mit einem expliziten Destruktor für den Broker: Sie sollte immer dann aufgerufen werden, wenn der Broker nicht mehr benötigt wird, um Speicherlecks zu vermeiden – besonders in lang laufenden Skripten oder Prozessen.

Ab PHP 8.0 ist enchant_broker_free() veraltet (deprecated). In PHP 8 wird der Broker als echtes Objekt vom Typ EnchantBroker verwaltet und automatisch freigegeben, sobald keine Referenz mehr existiert. Der explizite Aufruf der Funktion ist dann nicht mehr notwendig.

Für maximale Kompatibilität und sauberes Ressourcen-Management empfiehlt es sich, die Funktion in PHP-Versionen unter 8.0 zu verwenden und in neueren Versionen auf die automatische Freigabe zu vertrauen.

Parameter

Name Typ Default Beschreibung
$broker Pflicht EnchantBroker Ein Enchant-Broker-Objekt bzw. eine Broker-Ressource, das zuvor mit enchant_broker_init() erstellt wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Broker erfolgreich freigegeben wurde, andernfalls false.

Beispiele

Broker initialisieren, nutzen und freigeben

<?php
// Broker erstellen
$broker = enchant_broker_init();

// Verfügbare Backends anzeigen
$backends = enchant_broker_describe($broker);
foreach ($backends as $backend) {
    echo 'Backend: ' . $backend['name'] . PHP_EOL;
}

// Wörterbuch laden, falls vorhanden
if (enchant_broker_dict_exists($broker, 'de_DE')) {
    $dict = enchant_broker_request_dict($broker, 'de_DE');
    $word = 'Beispiell';
    if (!enchant_dict_check($dict, $word)) {
        $suggestions = enchant_dict_suggest($dict, $word);
        echo 'Vorschläge: ' . implode(', ', $suggestions) . PHP_EOL;
    }
    enchant_broker_free_dict($dict);
}

// Broker freigeben
enchant_broker_free($broker);
Backend: aspell Vorschläge: Beispiel, Beispiels

Broker in PHP 8 – keine explizite Freigabe nötig

<?php
// Ab PHP 8.0 ist enchant_broker_free() veraltet.
// Der Broker wird automatisch freigegeben, wenn er out-of-scope geht.
function pruefeWort(string $wort, string $sprache): bool {
    $broker = enchant_broker_init();
    if (!enchant_broker_dict_exists($broker, $sprache)) {
        return false;
    }
    $dict = enchant_broker_request_dict($broker, $sprache);
    $korrekt = enchant_dict_check($dict, $wort);
    enchant_broker_free_dict($dict);
    // $broker wird am Funktionsende automatisch freigegeben (PHP 8+)
    return $korrekt;
}

$ergebnis = pruefeWort('Haus', 'de_DE');
echo $ergebnis ? 'Korrekt' : 'Unbekannt';
Korrekt

// Wichtig · Fallstricke

Deprecation ab PHP 8.0: enchant_broker_free() ist seit PHP 8.0 als veraltet markiert und erzeugt einen E_DEPRECATED-Fehler. In PHP 8 wird das Broker-Objekt automatisch vom Garbage Collector freigegeben. Der Aufruf sollte in neuem Code vermieden werden.

Es ist wichtig, mit enchant_broker_free_dict() zunächst einzelne Wörterbücher zu schließen, bevor der Broker selbst freigegeben wird, um unerwartetes Verhalten zu vermeiden.