mirror of
https://github.com/retailcrm/NameCaseLib.git
synced 2024-12-05 03:16:06 +03:00
[0.4] убрана имплиментация интерфейса. новый метод в NCLNameCaseWord
This commit is contained in:
parent
f1cf5f090b
commit
4b00ab2357
@ -1,9 +1,9 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @license Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* @package NameCaseLib
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@ -20,32 +20,29 @@ require_once dirname(__FILE__) . '/NCL/NCLNameCaseCore.php';
|
||||
* @version 0.4
|
||||
* @package NameCaseLib
|
||||
*/
|
||||
class NCLNameCaseRu extends NCLNameCaseCore implements NCLNameCaseInterface
|
||||
class NCLNameCaseRu extends NCLNameCaseCore
|
||||
{
|
||||
|
||||
/**
|
||||
* Количество падежей в языке
|
||||
* @var int
|
||||
*/
|
||||
protected $CaseCount = 6;
|
||||
|
||||
/**
|
||||
* Список гласных русского языка
|
||||
* @var string
|
||||
*/
|
||||
private $vowels = "аеёиоуыэюя";
|
||||
|
||||
/**
|
||||
* Список согласных русского языка
|
||||
* @var string
|
||||
*/
|
||||
private $consonant = "бвгджзйклмнпрстфхцчшщ";
|
||||
|
||||
/**
|
||||
* Окончания имен/фамилий, который не склоняются
|
||||
* @var array
|
||||
*/
|
||||
private $ovo = array('ово', 'аго', 'яго', 'ирь');
|
||||
|
||||
/**
|
||||
* Окончания имен/фамилий, который не склоняются
|
||||
* @var array
|
||||
@ -475,7 +472,7 @@ class NCLNameCaseRu extends NCLNameCaseCore implements NCLNameCaseInterface
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Определение пола по правилам имен
|
||||
* @param NCLNameCaseWord $word обьект класса слов, для которого нужно определить пол
|
||||
@ -542,8 +539,8 @@ class NCLNameCaseRu extends NCLNameCaseCore implements NCLNameCaseInterface
|
||||
|
||||
$word->setGender($man, $woman);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
/**
|
||||
* Определение пола по правилам фамилий
|
||||
* @param NCLNameCaseWord $word обьект класса слов, для которого нужно определить пол
|
||||
*/
|
||||
@ -571,8 +568,8 @@ class NCLNameCaseRu extends NCLNameCaseCore implements NCLNameCaseInterface
|
||||
|
||||
$word->setGender($man, $woman);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
/**
|
||||
* Определение пола по правилам отчеств
|
||||
* @param NCLNameCaseWord $word обьект класса слов, для которого нужно определить пол
|
||||
*/
|
||||
@ -590,14 +587,14 @@ class NCLNameCaseRu extends NCLNameCaseCore implements NCLNameCaseInterface
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Идетифицирует слово определяе имя это, или фамилия, или отчество
|
||||
* - <b>N</b> - имя
|
||||
* - <b>S</b> - фамилия
|
||||
* - <b>F</b> - отчество
|
||||
* @param NCLNameCaseWord $word обьект класса слов, который необходимо идентифицировать
|
||||
*/
|
||||
protected function detectNamePart(NCLNameCaseWord $word)
|
||||
protected function detectNamePart(NCLNameCaseWord $word)
|
||||
{
|
||||
$namepart = $word->getWord();
|
||||
$this->setWorkingWord($namepart);
|
||||
|
@ -1,9 +1,9 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @license Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* @package NameCaseLib
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@ -20,7 +20,7 @@ require_once dirname(__FILE__) . '/NCL/NCLNameCaseCore.php';
|
||||
* @version 0.4
|
||||
* @package NameCaseLib
|
||||
*/
|
||||
class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface
|
||||
class NCLNameCaseUa extends NCLNameCaseCore
|
||||
{
|
||||
|
||||
/**
|
||||
@ -28,44 +28,37 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface
|
||||
* @var int
|
||||
*/
|
||||
protected $CaseCount = 7;
|
||||
|
||||
/**
|
||||
* Список гласных украинского языка
|
||||
* @var string
|
||||
*/
|
||||
private $vowels = 'аеиоуіїєюя';
|
||||
|
||||
/**
|
||||
* Список согласных украинского языка
|
||||
* @var string
|
||||
*/
|
||||
private $consonant = "бвгджзйклмнпрстфхцчшщ";
|
||||
|
||||
/**
|
||||
* Українські шиплячі приголосні
|
||||
* @var string
|
||||
*/
|
||||
private $shyplyachi = "жчшщ";
|
||||
|
||||
/**
|
||||
* Українські нешиплячі приголосні
|
||||
* @var string
|
||||
*/
|
||||
private $neshyplyachi = "бвгдзклмнпрстфхц";
|
||||
|
||||
/**
|
||||
* Українські завжди м’які звуки
|
||||
* @var string
|
||||
*/
|
||||
private $myaki = 'ьюяєї';
|
||||
|
||||
/**
|
||||
* Українські губні звуки
|
||||
* @var string
|
||||
*/
|
||||
private $gubni = 'мвпбф';
|
||||
|
||||
|
||||
/**
|
||||
* Чергування українських приголосних
|
||||
* Чергування г к х —» з ц с
|
||||
@ -82,7 +75,7 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface
|
||||
}
|
||||
return $letter;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Чергування українських приголосних
|
||||
* Чергування г к —» ж ч
|
||||
@ -98,7 +91,7 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface
|
||||
}
|
||||
return $letter;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <b>Визначення групи для іменників 2-ї відміни</b>
|
||||
* 1 - тверда
|
||||
@ -553,7 +546,6 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface
|
||||
* Функція намагається застосувати ланцюг правил для чоловічих прізвищ
|
||||
* @return boolean true - якщо було задіяно правило з переліку, false - якщо правило не знайдено
|
||||
*/
|
||||
|
||||
protected function manSecondName()
|
||||
{
|
||||
return $this->RulesChain('man', array(5, 1, 2, 3, 4));
|
||||
@ -595,7 +587,7 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Визначення статі, за правилами імені
|
||||
* @param NCLNameCaseWord $word об’єкт класу зі словом, для якого необхідно визначити стать
|
||||
@ -612,12 +604,12 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface
|
||||
{
|
||||
$man+=0.9;
|
||||
}
|
||||
|
||||
if($this->inNames($this->workingWord, 'Петро'))
|
||||
|
||||
if ($this->inNames($this->workingWord, 'Петро'))
|
||||
{
|
||||
$man+=30;
|
||||
}
|
||||
|
||||
|
||||
if ($this->in($this->Last(2), array('он', 'ов', 'ав', 'ам', 'ол', 'ан', 'рд', 'мп', 'ко', 'ло')))
|
||||
{
|
||||
$man+=0.5;
|
||||
@ -650,7 +642,7 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface
|
||||
|
||||
$word->setGender($man, $woman);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Визначення статі, за правилами прізвища
|
||||
* @param NCLNameCaseWord $word об’єкт класу зі словом, для якого необхідно визначити стать
|
||||
@ -679,7 +671,7 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface
|
||||
|
||||
$word->setGender($man, $woman);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Визначення статі, за правилами по-батькові
|
||||
* @param NCLNameCaseWord $word об’єкт класу зі словом, для якого необхідно визначити стать
|
||||
|
@ -14,7 +14,6 @@ if (!defined('NCL_DIR'))
|
||||
|
||||
require_once NCL_DIR . '/NCL.php';
|
||||
require_once NCL_DIR . '/NCLStr.php';
|
||||
require_once NCL_DIR . '/NCLNameCaseInterface.php';
|
||||
require_once NCL_DIR . '/NCLNameCaseWord.php';
|
||||
|
||||
/**
|
||||
@ -966,7 +965,7 @@ class NCLNameCaseCore extends NCL
|
||||
$this->AllWordCases();
|
||||
return $this->getFormatted($caseNum, $format);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Определяет пол человека по ФИО
|
||||
* @param string $fullname ФИО
|
||||
@ -978,15 +977,109 @@ class NCLNameCaseCore extends NCL
|
||||
$this->splitFullName($fullname);
|
||||
return $this->genderAutoDetect();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Возвращает внутренний массив $this->words каждая запись имеет тип NCLNameCaseWord
|
||||
* @return array Массив всех слов в системе
|
||||
*/
|
||||
public function getWordsArray()
|
||||
{
|
||||
return $this->words;
|
||||
return $this->words;
|
||||
}
|
||||
|
||||
/**
|
||||
* Функция пытается применить цыпочку правил для мужских имен
|
||||
* @return boolean true - если было использовано правило из списка, false - если правило не было найденым
|
||||
*/
|
||||
protected function manFirstName()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Функция пытается применить цыпочку правил для женских имен
|
||||
* @return boolean true - если было использовано правило из списка, false - если правило не было найденым
|
||||
*/
|
||||
protected function womanFirstName()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Функция пытается применить цыпочку правил для мужских фамилий
|
||||
* @return boolean true - если было использовано правило из списка, false - если правило не было найденым
|
||||
*/
|
||||
protected function manSecondName()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Функция пытается применить цыпочку правил для женских фамилий
|
||||
* @return boolean true - если было использовано правило из списка, false - если правило не было найденым
|
||||
*/
|
||||
protected function womanSecondName()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Функция склоняет мужский отчества
|
||||
* @return boolean true - если слово было успешно изменено, false - если не получилось этого сделать
|
||||
*/
|
||||
protected function manFatherName()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Функция склоняет женские отчества
|
||||
* @return boolean true - если слово было успешно изменено, false - если не получилось этого сделать
|
||||
*/
|
||||
protected function womanFatherName()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Определение пола по правилам имен
|
||||
* @param NCLNameCaseWord $word обьект класса слов, для которого нужно определить пол
|
||||
*/
|
||||
protected function GenderByFirstName(NCLNameCaseWord $word)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Определение пола по правилам фамилий
|
||||
* @param NCLNameCaseWord $word обьект класса слов, для которого нужно определить пол
|
||||
*/
|
||||
protected function GenderBySecondName(NCLNameCaseWord $word)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Определение пола по правилам отчеств
|
||||
* @param NCLNameCaseWord $word обьект класса слов, для которого нужно определить пол
|
||||
*/
|
||||
protected function GenderByFatherName(NCLNameCaseWord $word)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Идетифицирует слово определяе имя это, или фамилия, или отчество
|
||||
* - <b>N</b> - имя
|
||||
* - <b>S</b> - фамилия
|
||||
* - <b>F</b> - отчество
|
||||
* @param NCLNameCaseWord $word обьект класса слов, который необходимо идентифицировать
|
||||
*/
|
||||
protected function detectNamePart(NCLNameCaseWord $word)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
@ -1,58 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* @license Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* @package NameCaseLib
|
||||
*/
|
||||
|
||||
/**
|
||||
* Интерфейс для русского и украинского языка
|
||||
*
|
||||
* @author Андрей Чайка <bymer3@gmail.com>
|
||||
* @version 0.4
|
||||
* @package NameCaseLib
|
||||
*/
|
||||
interface NCLNameCaseInterface
|
||||
{
|
||||
|
||||
public function setFirstName($firstname="");
|
||||
|
||||
public function setSecondName($secondname="");
|
||||
|
||||
public function setFatherName($fathername="");
|
||||
|
||||
public function setGender($gender=0);
|
||||
|
||||
public function setFullName($secondName="", $firstName="", $fatherName="");
|
||||
|
||||
public function setName($firstname="");
|
||||
|
||||
public function setLastName($secondname="");
|
||||
|
||||
public function setSirname($secondname="");
|
||||
|
||||
public function genderAutoDetect();
|
||||
|
||||
public function getFullNameFormat($fullname);
|
||||
|
||||
public function getFirstNameCase($number=null);
|
||||
|
||||
public function getSecondNameCase($number=null);
|
||||
|
||||
public function getFatherNameCase($number=null);
|
||||
|
||||
public function qFirstName($firstName, $CaseNumber=null, $gender=0);
|
||||
|
||||
public function qSecondName($secondName, $CaseNumber=null, $gender=0);
|
||||
|
||||
public function qFatherName($fatherName, $CaseNumber=null, $gender=0);
|
||||
|
||||
public function getFormattedArray($format);
|
||||
|
||||
public function getFormatted($caseNum=0, $format="S N F");
|
||||
|
||||
public function qFullName($secondName="", $firstName="", $fatherName="", $gender=0, $caseNum=0, $format="S N F");
|
||||
|
||||
public function q($fullname, $caseNum=null, $gender=null);
|
||||
}
|
||||
|
||||
?>
|
@ -171,6 +171,20 @@ class NCLNameCaseWord
|
||||
return $this->NameCases;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает строку с нужным падежом текущего слова
|
||||
* @param int $number нужный падеж
|
||||
* @return string строка с нужным падежом текущего слова
|
||||
*/
|
||||
public function getNameCase($number)
|
||||
{
|
||||
if(isset($this->NameCases[$number]))
|
||||
{
|
||||
return $this->NameCases[$number];
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Расчитывает и возвращает пол текущего слова
|
||||
* @return int пол текущего слова
|
||||
|
Loading…
Reference in New Issue
Block a user