Розділ 5. Повне зазначення ПІБ

Бібліотека добре відмінює українські та російські ПІБ. Іноді система відмінює ПІБ з помилками. Найчастіше це пов’язано з тим, що не можливо достеменно визначити ім’я це чи прізвище, а також не завжди можливо правильно визначити стать людини.

Для того щоб уникнути цього можливо окремо вказати ім’я, прізвище, по батькові а також стать.

Є декілька способів окремо вказати ПІБ.

У бібліотеці є метод qFullName($secondName="", $firstName="", $fatherName="", $gender=0, $caseNum=0, $format="S N F"). У ньому є три необов’язкові параметри: $secondName (прізвище), $firstName (ім’я), $fatherName (по батькові). Також є необов’язковий параметр $gender який може отримувати значення NCL::$MAN, NCL::$WOMAN. Якщо стать не вказати, система визначить її самостійно.

Параметр $caseNum визначає номер відмінку, детальніше про номір відмінку можна знайти в розділі «Вбудовані константи». Якщо його не вказати, тоді метод поверне масив з усіма відмінками.

Відформатований вивід

Параметр $format відповідає за відформатований вивід ПІБ. $format — це рядок, який містить шаблон за яким буде відформатовано ПІБ. Шаблон має вигляд ‘S N F’:

Наприклад:

В методі qFullName() ми можемо вказати будь-який зручний формат. Деякі приклади наведені у файлі Tutorial/lesson5.1.php

<?php
    header
('Content-type: text/html; charset=utf-8');
    require 
'../Library/NCL.NameCase.ru.php';
    
$nc = new NCLNameCaseRu();

    
/**
    * Можна не вказувати формат
    */
    
echo $nc->qFullName("Иванов""Фёдор""Ильич"nullNCL::$TVORITELN)."\n"//Ивановым Фёдором Ильичом

    /**
    * У форматі необов’язково використати усі літери
    */
    
echo $nc->qFullName("Иванов""Фёдор""Ильич"NCL::$MANNCL::$TVORITELN"N F")."\n"//Фёдором Ильичом

    /**
    * Можна вказати формат але не вказати стать
    */
    
echo $nc->qFullName("Иванов""Фёдор""Ильич"nullNCL::$TVORITELN"S N")."\n"//Ивановым Фёдором

    /**
    * Можна вказати усі параметри
    */
    
echo $nc->qFullName("Иванов""Фёдор""Ильич"NCL::$MANNCL::$TVORITELN"S N F")."\n"//Ивановым Фёдором Ильичом

    /**
    * У рядку-форматі можуть бути будь-які літери
    */
    
echo $nc->qFullName("Иванов""Фёдор""Ильич"NCL::$MANNCL::$TVORITELN"Фамилия: S, Имя: N, Отчество: F")."\n"//Фамилия: Ивановым, Имя: Фёдором, Отчество: Ильичом
    
?>

Інші варіанти швидкого відмінювання

Окрім методу qFullName() існує ще три схожих методи:

Кожен із них виконує відмінювання за правилами імен/прізвищ/по батькові у відмінок $CaseNumber. Якщо відмінок $CaseNumber не вказаний, повертається масив з усіма відмінками. Необов’язковий параметр $gender приймає NCL::$MAN або NCL::$WOMAN, якщо він не вказаний, то система визначить його самостійно.

У якості прикладу можна розглянути файл Tutorial/lesson5.2.php

<?php
    header
('Content-type: text/html; charset=utf-8');
    require 
'../Library/NCL.NameCase.ru.php';
    
$nc = new NCLNameCaseRu();

    
/**
    * Стать можна не вказувати
    */
    
echo $nc->qFatherName("Николаевич"NCL::$DATELN)."\n";

    
/**
    * Якщо не вказати відмінок, то метод поверне масив з усіма відмінками.
    */
    
print_r($nc->qFirstName("Андрей"));

    
/**
    * Коли стать неможливо визначити, її буде корисно вказати.
    */
    
echo $nc->qSecondName("Касюк"NCL::$DATELNNCL::$MAN)."\n";
    
?>

Результат виконання:

Николаевичу
Array
(
    [0] => Андрей
    [1] => Андрея
    [2] => Андрею
    [3] => Андрея
    [4] => Андреем
    [5] => Андрее
)
Касюку

Використовування ланцюгів

Окрім викликів швидкіх методів, є можливість використовувати ланцюги методів. Наприклад:

echo $nc->fullReset()->setFirstName("Андрей")->setFatherName("Николаевич")->getFormatted(NCL::$RODITLN, "N F")."\n";

Для використання ланцюгу першою дією рекомендується викликати метод $nc->fullReset()->… для видалення результатів попереднього відмінювання. Після виконання метода можна використовувати наступні методи.

Для того, щоб вказати ім’я можна використати будь-який з наступних методів:

Для того, щоб вказати прізвище можна використати будь-який з наступних методів:

А також

Після того, як уся необхідна інформація була вказана необхідно викликати метод метод getFormatted($caseNum=0, $format="S N F"), де $caseNum номер відмінку, а $format — формат виводу. Детальніше про номер відмінку написано у розділі «Вбудовані константи», а про формат виводу у розділі «Відформатований вивід».

Приклад використання ланцюгів знаходиться у файлі Tutorial/lesson5.3.php.

<?php
header
('Content-type: text/html; charset=utf-8');
require 
'../Library/NCL.NameCase.ru.php';
$nc = new NCLNameCaseRu();

/**
 * У ланцюзі може бути будь-яка кількість методів
 */
echo $nc->fullReset()->setFirstName("Андрей")->setFatherName("Николаевич")->getFormatted(NCL::$RODITLN"N F")."\n";

/**
 * Ланцюг закінчується викликом методу getFormatted(), який повертає шуканий рядок
 */
print_r($nc->fullReset()->setFullName("Афросинин""Павел""Илларионович")->getFormatted(null"N F S"));

/**
 * Всі ланцюги починаються з виклику метода fullReset();
 */
echo $nc->fullReset()->setSecondName("Романчук")->setGender(NCL::$MAN)->getFormatted(NCL::$DATELN);
?>

Результат виконання

Андрея Николаевича
Array
(
    [0] => Павел Илларионович Афросинин
    [1] => Павла Илларионовича Афросинина
    [2] => Павлу Илларионовичу Афросинину
    [3] => Павла Илларионовича Афросинина
    [4] => Павлом Илларионовичем Афросининым
    [5] => Павле Илларионовиче Афросинине
)
Романчуку