Розділ 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’:
- S – прізвище
- N – ім’я
- F – по батькові
Наприклад:
- «S N» - «Прізвище Ім’я»
- «N F» - «Ім’я По батькові»
- «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("Иванов", "Фёдор", "Ильич", null, NCL::$TVORITELN)."\n"; //Ивановым Фёдором Ильичом
/**
* У форматі необов’язково використати усі літери
*/
echo $nc->qFullName("Иванов", "Фёдор", "Ильич", NCL::$MAN, NCL::$TVORITELN, "N F")."\n"; //Фёдором Ильичом
/**
* Можна вказати формат але не вказати стать
*/
echo $nc->qFullName("Иванов", "Фёдор", "Ильич", null, NCL::$TVORITELN, "S N")."\n"; //Ивановым Фёдором
/**
* Можна вказати усі параметри
*/
echo $nc->qFullName("Иванов", "Фёдор", "Ильич", NCL::$MAN, NCL::$TVORITELN, "S N F")."\n"; //Ивановым Фёдором Ильичом
/**
* У рядку-форматі можуть бути будь-які літери
*/
echo $nc->qFullName("Иванов", "Фёдор", "Ильич", NCL::$MAN, NCL::$TVORITELN, "Фамилия: S, Имя: N, Отчество: F")."\n"; //Фамилия: Ивановым, Имя: Фёдором, Отчество: Ильичом
?>
Інші варіанти швидкого відмінювання
Окрім методу qFullName() існує ще три схожих методи:
- qFirstName($firstName, $CaseNumber=null, $gender=0)
- qSecondName($secondName, $CaseNumber=null, $gender=0)
- qFatherName($fatherName, $CaseNumber=null, $gender=0)
Кожен із них виконує відмінювання за правилами імен/прізвищ/по батькові у відмінок $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::$DATELN, NCL::$MAN)."\n";
?>
Результат виконання:
Николаевичу Array ( [0] => Андрей [1] => Андрея [2] => Андрею [3] => Андрея [4] => Андреем [5] => Андрее ) Касюку
Використовування ланцюгів
Окрім викликів швидкіх методів, є можливість використовувати ланцюги методів. Наприклад:
echo $nc->fullReset()->setFirstName("Андрей")->setFatherName("Николаевич")->getFormatted(NCL::$RODITLN, "N F")."\n";
Для використання ланцюгу першою дією рекомендується викликати метод $nc->fullReset()->… для видалення результатів попереднього відмінювання. Після виконання метода можна використовувати наступні методи.
Для того, щоб вказати ім’я можна використати будь-який з наступних методів:
- setFirstName($firstname="")
- setName($firstname="")
Для того, щоб вказати прізвище можна використати будь-який з наступних методів:
- setSecondName($secondname="")
- setLastName($secondname="")
- setSirName($secondname="")
А також
- setGender($gender=0) для встановлення статі NCL::$MAN або NCL::$WOMAN
- setFatherName($fathername="") для встановлення По батькові
- setFullName($secondName="", $firstName="", $fatherName="") для встановлення всього ПІБ
Після того, як уся необхідна інформація була вказана необхідно викликати метод метод 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] => Павле Илларионовиче Афросинине ) Романчуку