phpsoftbox/inflector
Composer 安装命令:
composer require phpsoftbox/inflector
包简介
Inflector (pluralize/singularize) for the PhpSoftBox framework
README 文档
README
phpsoftbox/inflector — компонент для преобразования слов между единственным и множественным числом.
Компонент вдохновлён Doctrine Inflector, но реализован в более лёгком и прагматичном виде, чтобы:
- не тянуть лишние зависимости,
- иметь предсказуемую архитектуру под мульти-языковые ruleset'ы,
- оставаться удобным для использования в ORM/DBAL.
Установка
composer require phpsoftbox/inflector
Быстрый старт
use PhpSoftBox\Inflector\InflectorFactory; use PhpSoftBox\Inflector\LanguageEnum; $inflector = InflectorFactory::create(LanguageEnum::EN); echo $inflector->pluralize('post'); // posts echo $inflector->singularize('posts'); // post
Дополнительные методы (конвенции/ORM)
Инфлектор также содержит небольшой набор утилит, часто полезных в ORM и соглашениях по именованию:
$inflector->tableize('BlogPost'); // blog_post $inflector->classify('blog_post'); // BlogPost $inflector->camelize('blog_post'); // blogPost $inflector->capitalize('top-o-the-morning to all_of_you!'); // Top-O-The-Morning To All_of_you! $inflector->urlize('My first blog post'); // my-first-blog-post
Поддержка языков
Язык выбирается через LanguageEnum.
Сейчас реализованы:
ENRU(базовый набор rules для частых доменных слов)
$inflector = InflectorFactory::create(LanguageEnum::EN); $ruInflector = InflectorFactory::create(LanguageEnum::RU);
Пример RU:
use PhpSoftBox\Inflector\InflectorFactory; use PhpSoftBox\Inflector\LanguageEnum; $inflector = InflectorFactory::create(LanguageEnum::RU); echo $inflector->pluralize('миграция'); // миграции echo $inflector->singularize('товары'); // товар echo $inflector->pluralizeByCount(21, 'миграцию', 'миграции', 'миграций'); // миграцию
Склонение ФИО
В языках, где поддерживается склонение имён (сейчас RU), доступны:
getNameCases(string $fullName, ?string $gender = null): arraygetNameCase(string $fullName, string $case, ?string $gender = null): stringdetectNameGender(string $fullName): ?string
Для EN используется заглушка: имя возвращается без изменений, пол null.
use PhpSoftBox\Inflector\Names\Cases; $ru = InflectorFactory::create(LanguageEnum::RU); $en = InflectorFactory::create(LanguageEnum::EN); echo $ru->getNameCase('Иванов Иван Иванович', Cases::GENITIVE->value); // Иванова Ивана Ивановича $allCases = $ru->getNameCases('Иванова Анна Ивановна'); $gender = $ru->detectNameGender('Иванова Анна Ивановна'); // f echo $en->getNameCase('John Doe', Cases::GENITIVE->value); // John Doe
Как устроены правила (rules)
Структура rules-слоя похожа на Doctrine Inflector:
Pattern— паттерн (может быть регуляркой/.../или строкой/regex-фрагментом).Transformation— правило замены по совпадениюPattern.Substitution+Word— "неправильные" формы (irregular).Ruleset— объединяет:Transformations(regular)Patterns(uninflected)Substitutions(irregular)
Пример: английские правила располагаются в src/Rules/En:
Inflectable— склоняемые правила (plural/singular + irregular)Uninflected— слова/паттерны, которые не склоняютсяRules— сборка двух ruleset'ов (plural/singular)
Примеры
Irregular
$inflector = InflectorFactory::create(LanguageEnum::EN); echo $inflector->pluralize('person'); // people echo $inflector->singularize('people'); // person
Uninflected + regex
Uninflected можно задавать через паттерны, включая regex:
$inflector = InflectorFactory::create(LanguageEnum::EN); echo $inflector->pluralize('hardware'); // hardware echo $inflector->pluralize('metadata'); // metadata
Тесты
В репозитории PhpSoftBox тесты запускаются, как правило, через Makefile.
make select-inflector make php-test
phpsoftbox/inflector 适用场景与选型建议
phpsoftbox/inflector 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 79 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 02 月 05 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 phpsoftbox/inflector 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 phpsoftbox/inflector 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 79
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 26
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-02-05