Giter Club home page Giter Club logo

petrovich-php's Introduction

Petrovich

Склонение падежей русских имён, фамилий и отчеств.

Портированная версия с Ruby на PHP

Лицензия MIT

Пример

https://github.com/parshikov/petrovich-php-example

##Установка

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

Загрузите файлы в папку с библиотеками на сервере.

cd lib
git clone https://github.com/petrovich/petrovich-php.git petrovich-php

если вы хотите использовать petrovich как submodule,

git submodule add --init https://github.com/petrovich/petrovich-php.git lib/petrovich-php

или просто скачайте исходный код со страницы проекта на Github.

##Использование

В библиотеку входит класс Petrovich и trait Trait_Petrovich

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

mb_internal_encoding('UTF-8');

require_once('path-to-lib/petrovich-php/Petrovich.php');

$petrovich = new Petrovich(Petrovich::GENDER_MALE);

$firstname = "Александр";
$middlename = "Сергеевич";
$lastname = "Пушкин";

echo $petrovich->detectGender("Петровна");	// Petrovich::GENDER_FEMALE (см. пункт Пол)

echo '<br /><strong>Родительный падеж:</strong><br />';
echo $petrovich->firstname($firstname, Petrovich::CASE_GENITIVE).'<br />'; //	Александра
echo $petrovich->middlename($middlename, Petrovich::CASE_GENITIVE).'<br />'; //	Сергеевича
echo $petrovich->lastname($lastname, Petrovich::CASE_GENITIVE).'<br />'; //		Пушкина

Использование trait'а

Trait содержит в себе

  • Свойства
    • firstname
    • middlename
    • lastname
    • gender
  • Методы
    • firstname($case)
    • middlename($case)
    • lastname($case)
mb_internal_encoding('UTF-8');

require_once('path-to-lib/petrovich-php/Petrovich.php');
require_once('path-to-lib/petrovich-php/Trait/Petrovich.php');
	
class User {
	use Trait_Petrovich;
}

$user = new User();

$user->lastname = "Пушкин";
$user->firstname = "Александр";
$user->middlename = "Сергеевич";

$user->firstname(Petrovich::CASE_GENITIVE);	// Пушкина
$user->lastname(Petrovich::CASE_GENITIVE);	// Александра
$user->middlename(Petrovich::CASE_GENITIVE);	// Сергеевича

Падежи

Названия суффиксов для методов образованы от английских названий соответствующих падежей. Полный список поддерживаемых падежей приведён в таблице ниже.

Суффикс метода Падеж Характеризующий вопрос
CASE_NOMENATIVE именительный Кто? Что?
CASE_GENITIVE родительный Кого? Чего?
CASE_DATIVE дательный Кому? Чему?
CASE_ACCUSATIVE винительный Кого? Что?
CASE_INSTRUMENTAL творительный Кем? Чем?
CASE_PREPOSITIONAL предложный О ком? О чём?

Пол

Метод Petrovich::detectGender возвращает пол, на основе отчества. Возвращаемое значение не зависит от пола, переданного в конструктор. Для полов определены следующие константы

  • GENDER_ANDROGYNOUS - пол не определен;
  • GENDER_MALE - мужской пол;
  • GENDER_FEMALE - женский пол.

petrovich-php's People

Contributors

5818959 avatar mikebazhenov avatar nixprosoft avatar parshikov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

petrovich-php's Issues

Склонения и пол

Может я ошибаюсь, но php версия работает не так, как js. В js пол определяется автоматом, а здесь надо сначала его определить через класс, а потом скормить трейту. Довольно странно.

mb_internal_encoding("UTF-8");

class WrapperName {
    use TraitPetrovich;
}

$petrovichForGender = new Petrovich();
$petrovich = new WrapperName();

$petrovich->lastname = 'Пушкин';
$petrovich->firstname = 'Александр';
$petrovich->middlename = 'Сергеевич';

$petrovich->gender = $petrovichForGender->detectGender($petrovich->middlename);
$lastName = $petrovich->lastname(Petrovich::CASE_GENITIVE);

mb_internal_encoding

Не ошибка, но, наверное, стоит упомянуть в описании, что перед использованием библиотеки стоит сделать вызов mb_internal_encoding('UTF-8'); (или аналогичный). В противном случае, библиотека может выдавать некорректный результат из-за ошибок при манипуляции со строками.

composer.json is missing

I want to install this extension through Composer, but currenty it's not possible because composer.json is missing.

Актуальность

Этот проект актуален ?
Будет ли petrovich-php работать с новыми правилами из репозитория petrovich-rules от 2022 года? (сейчас в нём ссылка на коммит от 2014 года)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.