-
-
Notifications
You must be signed in to change notification settings - Fork 0
Architecture
github-actions[bot] edited this page Jul 16, 2026
·
1 revision
Пакет использует PSR-4 namespace CloudCastle\Dictionary\ (каталог src/) с подслоями:
-
CloudCastle\Dictionary\Contract\— интерфейсы (публичные контракты); -
CloudCastle\Dictionary\Exception\— исключения пакета; -
CloudCastle\Dictionary\…— реализация.
Архитектурные границы между слоями проверяются Deptrac:
Core зависит от Contract/Exception/External, Contract не зависит от Core.
CloudCastle\Dictionary\Tests\ (каталог tests/) разделён на наборы: Unit, Integration,
Security, Load, Performance.
flowchart LR
A[data/lang/class.php\nчистые return-массивы] -->|require, лениво| B[Dictionary::load\nкэш на процесс]
B --> C[entries\nлемма → WordEntry]
C -->|лениво при find по форме| D[formIndex\nформа → лемма]
C -->|лениво при первом formOf| E[flatIndex\nслово → карта форм]
-
Dictionary— контейнер записей и три структуры доступа: hash-карта лемм, обратный индекс форм и плоский индексformOf(оба ленивые, shared-ссылки — память не дублируется). -
WordEntry— иммутабельная запись: лемма,Gender, одушевлённость, словоформы по строковым ключам. -
Gender/WordClass— enum'ы рода/пола и разделов словаря. -
Данные — PHP-файлы
data/{lang}/{class}.php(opcache-friendly), формат описан в Конфигурации.
- Строгая типизация,
declare(strict_types=1)в каждом файле. - Zero-dependency: только PHP 8.1+.
- Иммутабельность:
mergeвозвращает новый словарь, записи неизменяемы. - Словарная точность: данные фиксируют исключения, правила — задача inflector.
- Публичный API документирован PHPDoc на русском.
CloudCastle Dictionary · · PHP 8.1+
GitHub · Packagist · Releases · Discussions
Email · Telegram · VK · Сетка · 💜 Поддержать проект
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)