NameCaseLib2 — Laravel-пакет для автоматичного відмінювання ПІБ (прізвище, ім'я, по-батькові) у російській та українській мовах.
Це адаптована для PHP 8.x та Laravel версія бібліотеки NameCaseLib, оригінально написаної Андрієм Чайкою.
composer require bokhanmax/namecaselib2Публікація конфігу (опціонально):
php artisan vendor:publish --tag=namecaselib-configФайл config/namecaselib.php:
return [
'locale' => 'ua', // 'ua' — українська, 'ru' — російська
'charset' => 'utf-8',
];use NameCaseLib2\NCL;
NCL::$IMENITLN // 0 — Називний: Іваненко Іван (Хто?)
NCL::$RODITLN // 1 — Родовий: Іваненка Івана (Кого?)
NCL::$DATELN // 2 — Давальний: Іваненку Івану (Кому?)
NCL::$VINITELN // 3 — Знахідний: Іваненка Івана (Кого?)
NCL::$TVORITELN // 4 — Орудний: Іваненком Іваном (Ким?)
NCL::$PREDLOGN // 5 — Місцевий: Іваненку Івану (Про кого?)
// Лише для української мови:
NCL::$UaKlychnyi // 6 — Кличний: Іване!use NameCaseLib2\Laravel\Facades\NameCase;
use NameCaseLib2\NCL;
// Усе ПІБ одразу (найзручніший спосіб):
NameCase::q('Іваненко Іван Іванович', NCL::$RODITLN, NCL::$MAN);
// → "Іваненка Івана Івановича"
// Тільки ім'я:
NameCase::qFirstName('Іван', NCL::$TVORITELN);
// Тільки прізвище:
NameCase::qSecondName('Іваненко', NCL::$RODITLN, NCL::$MAN);
// Тільки по-батькові:
NameCase::qFatherName('Іванович', NCL::$DATELN, NCL::$MAN);
// Флюент-стиль:
NameCase::setSecondName('Іваненко')
->setFirstName('Іван')
->setFatherName('Іванович')
->setGender(NCL::$MAN)
->getFormatted(NCL::$PREDLOGN);
// → "Іваненку Івану Івановичу"
// Змінити порядок виводу (S=прізвище, N=ім'я, F=по-батькові):
NameCase::setSecondName('Іваненко')
->setFirstName('Іван')
->setGender(NCL::$MAN)
->getFormatted(NCL::$DATELN, 'N S');
// → "Івану Іваненку"// З рядка ПІБ — повертає NCL::$MAN (1) або NCL::$WOMAN (2):
$gender = NameCase::genderDetect('Іваненко Іван Іванович'); // → 1
$gender = NameCase::genderDetect('Іваненко Олена Петрівна'); // → 2
if ($gender === NCL::$MAN) {
echo 'чоловік';
} elseif ($gender === NCL::$WOMAN) {
echo 'жінка';
}
// Флюент-стиль — якщо слова вже встановлені:
$gender = NameCase::setFirstName('Олена')
->setSecondName('Петренко')
->genderAutoDetect(); // → 2Надійність визначення:
- По-батькові → ~100%
- Ім'я + прізвище → ~100%
- Тільки ім'я → ~98.5%
- Тільки прізвище → ~96%
- Адаптація для PHP 8.x та Laravel
- Додано неймспейси, ServiceProvider, Facade, конфіг
- Виправлено сумісність з PHP 8.4
- Адаптовано тести
- Пакет протестовано на Laravel
- Rules updates (5 years of work)
- Повна переробка коду
- Підтримка різних регістрів слів
- Кличний відмінок для української
- Перша версія бібліотеки