Signatur
Beschreibung
PSpell\Dictionary ist eine opake Klassen-Instanz, die ein mit pspell_new(), pspell_new_config() oder pspell_new_personal() geladenes Pspell-Wörterbuch repräsentiert. Vor PHP 8.1 wurde an dieser Stelle ein einfacher int-Ressourcen-Handle zurückgegeben; seit PHP 8.1 liefern diese Funktionen stattdessen ein Objekt dieses Typs.
Die Klasse selbst besitzt weder öffentliche Methoden noch öffentliche Eigenschaften – sie dient ausschließlich als typsicherer Container (Opaque Object), der an alle pspell-Funktionen wie pspell_check(), pspell_suggest() oder pspell_add_to_personal() übergeben wird. Durch den Wechsel auf ein echtes Objekt können Typdeklarationen in eigenen Funktionen und Methoden nun präzise formuliert werden (PSpell\Dictionary $dict).
Die Klasse kann nicht direkt instanziiert werden; Instanzen werden ausschließlich intern von den pspell-Erstellungsfunktionen erzeugt. Sie benötigen die pspell-Erweiterung sowie eine installierte Aspell-Bibliothek auf dem System.
Beispiele
Wörterbuch laden und Rechtschreibprüfung durchführen
<?php
// Deutsches Wörterbuch laden (Aspell muss installiert sein)
$dictionary = pspell_new('de');
if ($dictionary instanceof PSpell\Dictionary) {
$word = 'Programierung';
if (pspell_check($dictionary, $word)) {
echo "'$word' ist korrekt geschrieben.";
} else {
$suggestions = pspell_suggest($dictionary, $word);
echo "'$word' ist falsch. Vorschläge: " . implode(', ', $suggestions);
}
}
Typsichere Funktion mit PSpell\Dictionary als Parameter
<?php
function pruefeWoerter(PSpell\Dictionary $dict, array $woerter): array
{
$fehler = [];
foreach ($woerter as $wort) {
if (!pspell_check($dict, $wort)) {
$fehler[$wort] = pspell_suggest($dict, $wort);
}
}
return $fehler;
}
$config = pspell_config_create('de');
pspell_config_mode($config, PSPELL_FAST);
$dict = pspell_new_config($config);
$ergebnisse = pruefeWoerter($dict, ['Hallo', 'Weld', 'Programierung']);
foreach ($ergebnisse as $falsch => $vorschlaege) {
echo "'$falsch' → " . implode(', ', array_slice($vorschlaege, 0, 3)) . PHP_EOL;
}
// Wichtig · Fallstricke
Migration von PHP < 8.1: Vor PHP 8.1 lieferten die pspell-Funktionen einen int-Ressourcen-Handle. Code, der explizit auf is_int($handle) oder einen Integer-Typ prüft, muss angepasst werden. Eine instanceof PSpell\Dictionary-Prüfung ist der empfohlene Weg.
Verfügbarkeit: Die pspell-Erweiterung ist nicht standardmäßig aktiviert. Auf Debian/Ubuntu-Systemen muss php-pspell sowie aspell und ein passendes Sprachpaket (z. B. aspell-de) installiert sein. Auf anderen Systemen sind entsprechende Pakete notwendig.
Da die Klasse vollständig opak ist, können keine eigenen Eigenschaften ausgelesen oder gesetzt werden. Jeder Zugriff auf interne Daten erfolgt ausschließlich über die pspell-Funktionen.