boshurik/petrovich-php

Fork of original petrovich/petrovich-php repository, with testing, modern PHP support and minor improvements

2.0.1 2023-08-23 11:13 UTC

This package is auto-updated.

Last update: 2024-04-23 12:44:13 UTC


README

Petrovich

Склонение падежей русских имён, фамилий и отчеств. Портированная версия с Ruby на PHP, использует официальные правила

Установка и использование

Для работы требуется PHP >= 7.2.9

Для установке, добавьте данный пакет в зависимости Composer, либо вручную, либо используя следующую команду:

composer require boshurik/petrovich-php

Правила

Для установки правил можно использовать

composer require cloudloyalty/petrovich-rules

Правила обновляются редко, поэтому хорошей идеей будет сохранить их в ресурсах вашего проекта

Пример использования

Пример склонения отдельно имени, фамилии и отчества:

mb_internal_encoding('UTF-8');

require_once 'path-to-vendor/autoload.php';

$petrovich = new Staticall\Petrovich(Staticall\Petrovich\Loader::load('path-to-petrovich-rules/rules.json'));

// Родительный падеж
$lastNameGenitive   = $petrovich->inflectLastName('Пушкин', Staticall\Petrovich\Ruleset::CASE_GENITIVE, Staticall\Petrovich\Ruleset::GENDER_MALE); // Пушкина
$firstNameGenitive  = $petrovich->inflectFirstName('Александр', Staticall\Petrovich\Ruleset::CASE_GENITIVE, Petrovich\Ruleset::GENDER_MALE); // Александра
$middleNameGenitive = $petrovich->inflectMiddleName('Сергеевич', Staticall\Petrovich\Ruleset::CASE_GENITIVE, Staticall\Petrovich\Ruleset::GENDER_MALE); // Сергеевича

Пример склонения одновременно имени, фамилии и отчества:

mb_internal_encoding('UTF-8');

require_once 'path-to-vendor/autoload.php';

$petrovich = new Staticall\Petrovich(Staticall\Petrovich\Loader::load('path-to-petrovich-rules/rules.json'));

// Родительный падеж
// Важно! На данный момент, такой порядок обязателен
$fullNameGenitive = $petrovich->inflectFullName('Пушкин Александр Сергеевич', Staticall\Petrovich\Ruleset::CASE_GENITIVE, Staticall\Petrovich\Ruleset::GENDER_MALE); // Пушкина Александра Сергеевича

Как можно определить пол по отчеству:

mb_internal_encoding('UTF-8');

require_once 'path-to-vendor/autoload.php';

echo Staticall\Petrovich::detectGender('Петровна'); // Petrovich::GENDER_FEMALE

Версионирование

При версионировании, следуем заветам SemVer. Для просмотра доступных версий, взгляните на теги этого репозитория.

Авторы

Все контрибьюторы оригинального проекта.

А также все контрибьюторы этого и оригинального форка.

Лицензия

Проект использует лицензию MIT - для просмотра лицензии, посмотрите файл LICENSE.md

Благодарности