cloudcastle/dictionary

Production-ready PHP 8.1+ package (CloudCastle Dictionary).

Maintainers

Package info

github.com/cloudcastle-apps/dictionary

Homepage

Documentation

pkg:composer/cloudcastle/dictionary

Transparency log

Statistics

Installs: 129

Dependents: 1

Suggesters: 0

Stars: 1

Open Issues: 1

v1.0.2 2026-07-16 14:48 UTC

README

Version PHP Version License Total Downloads Monthly Downloads Packagist Stars Dependents Suggesters Security Advisories

Quality CodeQL GitHub Stars GitHub Forks GitHub Issues Latest Release Last Commit Contributors

Coverage Mutation MSI OpenSSF Scorecard PHPStan Psalm Code Style

Словари словоформ для PHP 8.1+: род, пол, падежи и неправильные глаголы пяти языков (ru/en/de/fr/es) со словарной точностью. Лексическая база склонений cloudcastle/inflector.

Язык документации: Русский · English

Установка

composer require cloudcastle/dictionary

Требуется PHP 8.1+.

Быстрый старт

<?php

use CloudCastle\Dictionary\Dictionary;
use CloudCastle\Dictionary\WordClass;

$nouns = Dictionary::load('ru', WordClass::Noun);

// словарная точность каждой формы: 6 падежей × 2 числа
$nouns->formOf('человек', 'gen:pl');   // «людей»
$nouns->find('людьми')?->lemma;        // «человек» — обратный поиск по форме

// пол по имени, в том числе по косвенной форме
$names = Dictionary::load('ru', WordClass::GivenName);
$names->find('Александра')?->gender;   // Gender::Feminine
$names->find('Петре')?->gender;        // Gender::Masculine

// неправильные глаголы
Dictionary::load('en', WordClass::Verb)->formOf('go', 'past');   // «went»

// пользовательский словарь уточняет поставляемый
$custom = Dictionary::fromArray(['кофе' => ['g' => 'm']]);
$merged = $nouns->merge($custom);

Возможности

  • Пять языков — паритет с inflector — русский, английский, немецкий, французский, испанский: словари существительных, глаголов и имён для каждого.
  • Словарная точность — точные словоформы вместо эвристик: полная падежная парадигма русских существительных (6 падежей × 2 числа) и немецких (4 × 2, включая умлаут-плюрали и n-склонение), нерегулярное множественное en/fr/es, неправильные глаголы всех пяти языков.
  • Род и пол — грамматический род существительных (включая неочевидный: la mano, el día), пол по личному имени для всех пяти языков (включая косвенные формы и имена-унисекс: Саша, Kim, Camille, Guadalupe), одушевлённость.
  • Обратный поиск — лемма по любой словоформе за O(1) (ленивый индекс).
  • formOf() — словоформа за один вызов через плоский индекс: быстрее мемоизации doctrine на горячем пути.
  • Расширяемость — пользовательские словари fromArray/fromEntries и merge с приоритетом пользовательских записей.
  • Безопасность — строгая валидация кода языка (без path traversal), файлы данных — чистые return-массивы, дружелюбные к opcache.
  • Zero-dependency — только PHP 8.1+.

Пакет — словарная база для склонений cloudcastle/inflector: род, пол, числительные, времена и падежи со словарной точностью каждой формы.

Сравнение с аналогами

Сгенерировано из tools/features-data.php (факты о поддержке). Легенда: ✅ полностью · ⚠️ частично · 🔌 адаптер · ❌ нет · — неприменимо.

Словарная точность

Функция Dictionary morphos doctrine icanboogie symfony phpmorphy 🏆 Победитель
Точные словоформы из словаря (не правила) ⚠️ Dictionary, phpmorphy
Полная падежная парадигма (6×2 форм) Dictionary, morphos, phpmorphy
Обратный поиск: лемма по любой словоформе Dictionary, phpmorphy
Род существительных и одушевлённость ⚠️ Dictionary, phpmorphy

Имена и пол

Функция Dictionary morphos doctrine icanboogie symfony phpmorphy 🏆 Победитель
Пол по личному имени ⚠️ Dictionary, morphos
Пол по косвенной форме имени («Петре») Dictionary
Имена-унисекс (общий род) ⚠️ Dictionary

Глаголы

Функция Dictionary morphos doctrine icanboogie symfony phpmorphy 🏆 Победитель
Нерегулярные глаголы EN (go → went/gone) Dictionary
Формы прошедшего по роду RU (шёл/шла/шло) ⚠️ Dictionary, phpmorphy
Спряжение по лицам и числам ⚠️ Dictionary, phpmorphy

Расширяемость и эксплуатация

Функция Dictionary morphos doctrine icanboogie symfony phpmorphy 🏆 Победитель
Пользовательские словари и merge с приоритетом ⚠️ ⚠️ Dictionary
Zero-dependency (без расширений и бинарных словарей) Паритет лидеров
Ленивые загрузка и индексация (opcache-friendly PHP-данные) ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ Dictionary
Актуальный PHP 8.1+ и строгая типизация ⚠️ Dictionary, doctrine, icanboogie, symfony

Производительность

Сгенерировано из composer compare (PHP 8.1.34). Правки в блоке будут перезаписаны.

Сценарий cloudcastle/dictionary wapmorgan/morphos doctrine/inflector icanboogie/inflector symfony/string 🏆 Победитель
RU: родительный падеж нерегулярного слова (человек → человека) 10330798 ops/s 88216 ops/s cloudcastle/dictionary
RU: нерегулярное множественное (человек → люди) 10688848 ops/s 84360 ops/s cloudcastle/dictionary
RU: пол по имени (Александра) 10406411 ops/s 825724 ops/s cloudcastle/dictionary
EN: нерегулярное множественное (child → children) 8718154 ops/s 9965084 ops/s 264925 ops/s 1173642 ops/s doctrine/inflector
EN: прошедшее неправильного глагола (go → went) 10964067 ops/s cloudcastle/dictionary
Обратный поиск: лемма по словоформе (людьми → человек) 8662338 ops/s cloudcastle/dictionary

Документация

Качество

Пакет придерживается production-стандартов: строгая типизация, полный статический анализ (PHPStan max, Psalm level 1, PHPMD, Deptrac, Rector), покрытие тестами ≥ 98 % на каждый файл и мутационное тестирование (Infection MSI ≥ 98 %). Матрица CI — PHP 8.1–8.5.

composer ci        # полный пайплайн качества
composer check     # быстрые проверки перед коммитом
composer test      # тесты (unit + integration + security + load)

Контакты

Поддержать проект

Реквизиты для поддержки автора — в DONATE.md.

Contributors

Спасибо всем, кто вносит вклад в проект:

Список ведётся по спецификации all-contributors.

Лицензия

MIT © CloudCastle