Signatur
Beschreibung
PSpell\Config ist eine vollständig opake Wrapper-Klasse, die intern eine pspell-Konfiguration repräsentiert. Sie besitzt keine öffentlichen Eigenschaften oder Methoden, die direkt aufrufbar wären. Stattdessen wird eine Instanz dieser Klasse von den Funktionen pspell_config_create() zurückgegeben und anschließend an weitere pspell_config_*()-Funktionen übergeben, um die Konfiguration anzupassen, bevor mit pspell_new_config() ein fertiges PSpell\Dictionary erzeugt wird.
Vor PHP 8.1.0 wurden pspell-Konfigurationen als einfache Ressourcen (resource) behandelt. Mit PHP 8.1.0 wurden diese Ressourcen durch Objekte dieses Typs ersetzt, um die PHP-interne Ressourcenverwaltung zu modernisieren und Typsicherheit zu ermöglichen. Bestehender Code, der den Rückgabewert lediglich an andere pspell-Funktionen weiterreicht, funktioniert ohne Anpassung weiter.
Typische Nutzung: Zunächst wird mit pspell_config_create() ein PSpell\Config-Objekt erzeugt, danach werden Optionen wie persönliche Wortlisten (pspell_config_personal()), Ersatzvorschläge-Modus (pspell_config_mode()) oder Zeichencodierung (pspell_config_runtogether()) gesetzt, und abschließend wird das konfigurierte Objekt an pspell_new_config() übergeben.
Hinweis: Die pspell-Extension und damit diese Klasse sind nur verfügbar, wenn PHP mit Aspell/pspell-Unterstützung kompiliert wurde (--with-pspell). In modernen Projekten werden Rechtschreibprüfungs-Bibliotheken wie php-spellchecker oft bevorzugt.
Beispiele
Konfiguration erstellen und Dictionary öffnen
<?php
// PSpell\Config-Objekt für Deutsch erstellen
$config = pspell_config_create('de');
// Modus: Viele Vorschläge liefern
pspell_config_mode($config, PSPELL_FAST);
// Persönliche Wortliste einbinden
pspell_config_personal($config, '/tmp/my_wordlist.pws');
// Dictionary mit der fertigen Konfiguration öffnen
$dictionary = pspell_new_config($config);
// Wort prüfen
$word = 'Programierer'; // absichtlich falsch
if (!pspell_check($dictionary, $word)) {
$suggestions = pspell_suggest($dictionary, $word);
echo "'$word' unbekannt. Vorschläge: " . implode(', ', $suggestions) . PHP_EOL;
} else {
echo "'$word' ist korrekt." . PHP_EOL;
}
Typ-Überprüfung des Konfigurationsobjekts
<?php
$config = pspell_config_create('en');
// Ab PHP 8.1.0 ist $config eine Instanz von PSpell\Config
if ($config instanceof PSpell\Config) {
echo 'Konfigurationsobjekt erfolgreich erstellt.' . PHP_EOL;
var_dump($config);
} else {
echo 'Fehler beim Erstellen der Konfiguration.' . PHP_EOL;
}
// Wichtig · Fallstricke
Abwärtskompatibilität: Vor PHP 8.1.0 lieferten die pspell-Funktionen eine resource. Code, der mit is_resource() auf das Ergebnis prüfte, muss für PHP 8.1+ auf instanceof PSpell\Config umgestellt werden.
Extension-Verfügbarkeit: Die pspell-Extension ist nicht standardmäßig aktiv. Sie erfordert die Systembibliothek libaspell sowie den PHP-Kompilierungsschalter --with-pspell. Auf vielen gemeinsam genutzten Hostings fehlt diese Extension.
Deprecation-Hinweis: Die gesamte pspell-Extension gilt als wenig gepflegt; für neue Projekte empfiehlt es sich, Alternativen wie externe Rechtschreibdienste oder die php-spellchecker-Bibliothek zu evaluieren.