| 148 |
lars |
1 |
<?php
|
|
|
2 |
|
|
|
3 |
namespace Faker\Provider\ru_RU;
|
|
|
4 |
|
|
|
5 |
class Person extends \Faker\Provider\Person
|
|
|
6 |
{
|
|
|
7 |
protected static $maleNameFormats = [
|
|
|
8 |
'{{firstNameMale}} {{middleNameMale}} {{lastName}}',
|
|
|
9 |
'{{lastName}} {{firstNameMale}} {{middleNameMale}}',
|
|
|
10 |
];
|
|
|
11 |
|
|
|
12 |
/**
|
|
|
13 |
* This provider uses wikipedia's 250 top russian last names
|
|
|
14 |
* That list of MALE last names could be safely extended to FEMALE list just by adding 'a' letter at the end
|
|
|
15 |
*/
|
|
|
16 |
protected static $femaleNameFormats = [
|
|
|
17 |
'{{firstNameFemale}} {{middleNameFemale}} {{lastName}}а',
|
|
|
18 |
'{{lastName}}а {{firstNameFemale}} {{middleNameFemale}}',
|
|
|
19 |
];
|
|
|
20 |
|
|
|
21 |
/**
|
|
|
22 |
* {@link} http://ru.wikipedia.org/wiki/%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%BE%D0%B5_%D0%BB%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D0%B8%D0%BC%D1%8F
|
|
|
23 |
* {@link} http://masterrussian.com/aa031701a.shtml
|
|
|
24 |
*/
|
|
|
25 |
protected static $firstNameMale = [
|
|
|
26 |
'Абрам', 'Август', 'Адам', 'Адриан', 'Аким', 'Александр', 'Алексей', 'Альберт', 'Ананий', 'Анатолий', 'Андрей', 'Антон', 'Антонин',
|
|
|
27 |
'Аполлон', 'Аркадий', 'Арсений', 'Артемий', 'Артур', 'Артём', 'Афанасий', 'Богдан', 'Болеслав', 'Борис', 'Бронислав', 'Вадим',
|
|
|
28 |
'Валентин', 'Валериан', 'Валерий', 'Василий', 'Вениамин', 'Викентий', 'Виктор', 'Виль', 'Виталий', 'Витольд', 'Влад', 'Владимир',
|
|
|
29 |
'Владислав', 'Владлен', 'Всеволод', 'Вячеслав', 'Гавриил', 'Гарри', 'Геннадий', 'Георгий', 'Герасим', 'Герман', 'Глеб', 'Гордей',
|
|
|
30 |
'Григорий', 'Давид', 'Дан', 'Даниил', 'Данила', 'Денис', 'Дмитрий', 'Добрыня', 'Донат', 'Евгений', 'Егор', 'Ефим',
|
|
|
31 |
'Захар', 'Иван', 'Игнат', 'Игнатий', 'Игорь', 'Илларион', 'Илья', 'Иммануил', 'Иннокентий', 'Иосиф', 'Ираклий', 'Кирилл',
|
|
|
32 |
'Клим', 'Константин', 'Кузьма', 'Лаврентий', 'Лев', 'Леонид', 'Макар', 'Максим', 'Марат', 'Марк', 'Матвей', 'Милан',
|
|
|
33 |
'Мирослав', 'Михаил', 'Назар', 'Нестор', 'Никита', 'Никодим', 'Николай', 'Олег', 'Павел', 'Платон', 'Прохор', 'Пётр',
|
|
|
34 |
'Радислав', 'Рафаил', 'Роберт', 'Родион', 'Роман', 'Ростислав', 'Руслан', 'Сава', 'Савва', 'Святослав', 'Семён', 'Сергей',
|
|
|
35 |
'Спартак', 'Станислав', 'Степан', 'Стефан', 'Тарас', 'Тимофей', 'Тимур', 'Тит', 'Трофим', 'Феликс', 'Филипп', 'Фёдор',
|
|
|
36 |
'Эдуард', 'Эрик', 'Юлиан', 'Юлий', 'Юрий', 'Яков', 'Ян', 'Ярослав', 'Милан',
|
|
|
37 |
];
|
|
|
38 |
|
|
|
39 |
/**
|
|
|
40 |
* {@link} http://masterrussian.com/aa031001a.shtml
|
|
|
41 |
*/
|
|
|
42 |
protected static $firstNameFemale = [
|
|
|
43 |
'Александра', 'Алина', 'Алиса', 'Алла', 'Альбина', 'Алёна', 'Анастасия', 'Анжелика', 'Анна', 'Антонина', 'Анфиса', 'Валентина', 'Валерия',
|
|
|
44 |
'Варвара', 'Василиса', 'Вера', 'Вероника', 'Виктория', 'Владлена', 'Галина', 'Дарья', 'Диана', 'Дина', 'Доминика', 'Ева',
|
|
|
45 |
'Евгения', 'Екатерина', 'Елена', 'Елизавета', 'Жанна', 'Зинаида', 'Злата', 'Зоя', 'Изабелла', 'Изольда', 'Инга', 'Инесса',
|
|
|
46 |
'Инна', 'Ирина', 'Искра', 'Капитолина', 'Клавдия', 'Клара', 'Клементина', 'Кристина', 'Ксения', 'Лада', 'Лариса', 'Лидия',
|
|
|
47 |
'Лилия', 'Любовь', 'Людмила', 'Люся', 'Майя', 'Мальвина', 'Маргарита', 'Марина', 'Мария', 'Марта', 'Надежда', 'Наталья',
|
|
|
48 |
'Нелли', 'Ника', 'Нина', 'Нонна', 'Оксана', 'Олеся', 'Ольга', 'Полина', 'Рада', 'Раиса', 'Регина', 'Рената',
|
|
|
49 |
'Розалина', 'Светлана', 'Софья', 'София', 'Таисия', 'Тамара', 'Татьяна', 'Ульяна', 'Фаина', 'Федосья', 'Флорентина', 'Эльвира', 'Эмилия',
|
|
|
50 |
'Эмма', 'Юлия', 'Яна', 'Ярослава',
|
|
|
51 |
];
|
|
|
52 |
|
|
|
53 |
protected static $middleNameMale = [
|
|
|
54 |
'Александрович', 'Алексеевич', 'Андреевич', 'Дмитриевич', 'Евгеньевич',
|
|
|
55 |
'Сергеевич', 'Иванович', 'Фёдорович', 'Львович', 'Романович', 'Владимирович',
|
|
|
56 |
'Борисович', 'Максимович',
|
|
|
57 |
];
|
|
|
58 |
|
|
|
59 |
protected static $middleNameFemale = [
|
|
|
60 |
'Александровна', 'Алексеевна', 'Андреевна', 'Дмитриевна', 'Евгеньевна',
|
|
|
61 |
'Сергеевна', 'Ивановна', 'Фёдоровна', 'Львовна', 'Романовна', 'Владимировна',
|
|
|
62 |
'Борисовна', 'Максимовна',
|
|
|
63 |
];
|
|
|
64 |
|
|
|
65 |
/**
|
|
|
66 |
* {@link} http://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BE%D0%B1%D1%89%D0%B5%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D1%85_%D1%84%D0%B0%D0%BC%D0%B8%D0%BB%D0%B8%D0%B9
|
|
|
67 |
*/
|
|
|
68 |
protected static $lastName = [
|
|
|
69 |
'Смирнов', 'Иванов', 'Кузнецов', 'Соколов', 'Попов', 'Лебедев', 'Козлов',
|
|
|
70 |
'Новиков', 'Морозов', 'Петров', 'Волков', 'Соловьёв', 'Васильев', 'Зайцев',
|
|
|
71 |
'Павлов', 'Семёнов', 'Голубев', 'Виноградов', 'Богданов', 'Воробьёв',
|
|
|
72 |
'Фёдоров', 'Михайлов', 'Беляев', 'Тарасов', 'Белов', 'Комаров', 'Орлов',
|
|
|
73 |
'Киселёв', 'Макаров', 'Андреев', 'Ковалёв', 'Ильин', 'Гусев', 'Титов',
|
|
|
74 |
'Кузьмин', 'Кудрявцев', 'Баранов', 'Куликов', 'Алексеев', 'Степанов',
|
|
|
75 |
'Яковлев', 'Сорокин', 'Сергеев', 'Романов', 'Захаров', 'Борисов', 'Королёв',
|
|
|
76 |
'Герасимов', 'Пономарёв', 'Григорьев', 'Лазарев', 'Медведев', 'Ершов',
|
|
|
77 |
'Никитин', 'Соболев', 'Рябов', 'Поляков', 'Цветков', 'Данилов', 'Жуков',
|
|
|
78 |
'Фролов', 'Журавлёв', 'Николаев', 'Крылов', 'Максимов', 'Сидоров', 'Осипов',
|
|
|
79 |
'Белоусов', 'Федотов', 'Дорофеев', 'Егоров', 'Матвеев', 'Бобров', 'Дмитриев',
|
|
|
80 |
'Калинин', 'Анисимов', 'Петухов', 'Антонов', 'Тимофеев', 'Никифоров',
|
|
|
81 |
'Веселов', 'Филиппов', 'Марков', 'Большаков', 'Суханов', 'Миронов', 'Ширяев',
|
|
|
82 |
'Александров', 'Коновалов', 'Шестаков', 'Казаков', 'Ефимов', 'Денисов',
|
|
|
83 |
'Громов', 'Фомин', 'Давыдов', 'Мельников', 'Щербаков', 'Блинов', 'Колесников',
|
|
|
84 |
'Карпов', 'Афанасьев', 'Власов', 'Маслов', 'Исаков', 'Тихонов', 'Аксёнов',
|
|
|
85 |
'Гаврилов', 'Родионов', 'Котов', 'Горбунов', 'Кудряшов', 'Быков', 'Зуев',
|
|
|
86 |
'Третьяков', 'Савельев', 'Панов', 'Рыбаков', 'Суворов', 'Абрамов', 'Воронов',
|
|
|
87 |
'Мухин', 'Архипов', 'Трофимов', 'Мартынов', 'Емельянов', 'Горшков', 'Чернов',
|
|
|
88 |
'Овчинников', 'Селезнёв', 'Панфилов', 'Копылов', 'Михеев', 'Галкин', 'Назаров',
|
|
|
89 |
'Лобанов', 'Лукин', 'Беляков', 'Потапов', 'Некрасов', 'Хохлов', 'Жданов',
|
|
|
90 |
'Наумов', 'Шилов', 'Воронцов', 'Ермаков', 'Дроздов', 'Игнатьев', 'Савин',
|
|
|
91 |
'Логинов', 'Сафонов', 'Капустин', 'Кириллов', 'Моисеев', 'Елисеев', 'Кошелев',
|
|
|
92 |
'Костин', 'Горбачёв', 'Орехов', 'Ефремов', 'Исаев', 'Евдокимов', 'Калашников',
|
|
|
93 |
'Кабанов', 'Носков', 'Юдин', 'Кулагин', 'Лапин', 'Прохоров', 'Нестеров',
|
|
|
94 |
'Харитонов', 'Агафонов', 'Муравьёв', 'Ларионов', 'Федосеев', 'Зимин', 'Пахомов',
|
|
|
95 |
'Шубин', 'Игнатов', 'Филатов', 'Крюков', 'Рогов', 'Кулаков', 'Терентьев',
|
|
|
96 |
'Молчанов', 'Владимиров', 'Артемьев', 'Гурьев', 'Зиновьев', 'Гришин', 'Кононов',
|
|
|
97 |
'Дементьев', 'Ситников', 'Симонов', 'Мишин', 'Фадеев', 'Комиссаров', 'Мамонтов',
|
|
|
98 |
'Носов', 'Гуляев', 'Шаров', 'Устинов', 'Вишняков', 'Евсеев', 'Лаврентьев',
|
|
|
99 |
'Брагин', 'Константинов', 'Корнилов', 'Авдеев', 'Зыков', 'Бирюков', 'Шарапов',
|
|
|
100 |
'Никонов', 'Щукин', 'Дьячков', 'Одинцов', 'Сазонов', 'Якушев', 'Красильников',
|
|
|
101 |
'Гордеев', 'Самойлов', 'Князев', 'Беспалов', 'Уваров', 'Шашков', 'Бобылёв',
|
|
|
102 |
'Доронин', 'Белозёров', 'Рожков', 'Самсонов', 'Мясников', 'Лихачёв', 'Буров',
|
|
|
103 |
'Сысоев', 'Фомичёв', 'Русаков', 'Стрелков', 'Гущин', 'Тетерин', 'Колобов',
|
|
|
104 |
'Субботин', 'Фокин', 'Блохин', 'Селиверстов', 'Пестов', 'Кондратьев', 'Силин',
|
|
|
105 |
'Меркушев', 'Лыткин', 'Туров',
|
|
|
106 |
];
|
|
|
107 |
|
|
|
108 |
protected static $lastNameSuffix = ['а', ''];
|
|
|
109 |
|
|
|
110 |
/**
|
|
|
111 |
* Return male middle name
|
|
|
112 |
*
|
|
|
113 |
* @example 'Иванович'
|
|
|
114 |
*
|
|
|
115 |
* @return string Middle name
|
|
|
116 |
*/
|
|
|
117 |
public function middleNameMale()
|
|
|
118 |
{
|
|
|
119 |
return static::randomElement(static::$middleNameMale);
|
|
|
120 |
}
|
|
|
121 |
|
|
|
122 |
/**
|
|
|
123 |
* Return female middle name
|
|
|
124 |
*
|
|
|
125 |
* @example 'Ивановна'
|
|
|
126 |
*
|
|
|
127 |
* @return string Middle name
|
|
|
128 |
*/
|
|
|
129 |
public function middleNameFemale()
|
|
|
130 |
{
|
|
|
131 |
return static::randomElement(static::$middleNameFemale);
|
|
|
132 |
}
|
|
|
133 |
|
|
|
134 |
/**
|
|
|
135 |
* Return middle name for the specified gender.
|
|
|
136 |
*
|
|
|
137 |
* @param string|null $gender A gender the middle name should be generated
|
|
|
138 |
* for. If the argument is skipped a random gender will be used.
|
|
|
139 |
*
|
|
|
140 |
* @return string Middle name
|
|
|
141 |
*/
|
|
|
142 |
public function middleName($gender = null)
|
|
|
143 |
{
|
|
|
144 |
if ($gender === static::GENDER_MALE) {
|
|
|
145 |
return $this->middleNameMale();
|
|
|
146 |
}
|
|
|
147 |
|
|
|
148 |
if ($gender === static::GENDER_FEMALE) {
|
|
|
149 |
return $this->middleNameFemale();
|
|
|
150 |
}
|
|
|
151 |
|
|
|
152 |
return $this->middleName(static::randomElement([
|
|
|
153 |
static::GENDER_MALE,
|
|
|
154 |
static::GENDER_FEMALE,
|
|
|
155 |
]));
|
|
|
156 |
}
|
|
|
157 |
|
|
|
158 |
/**
|
|
|
159 |
* Return last name for the specified gender.
|
|
|
160 |
*
|
|
|
161 |
* @param string|null $gender A gender of the last name should be generated
|
|
|
162 |
* for. If the argument is skipped a random gender will be used.
|
|
|
163 |
*
|
|
|
164 |
* @return string Last name
|
|
|
165 |
*/
|
|
|
166 |
public function lastName($gender = null)
|
|
|
167 |
{
|
|
|
168 |
$lastName = static::randomElement(static::$lastName);
|
|
|
169 |
|
|
|
170 |
if (static::GENDER_FEMALE === $gender) {
|
|
|
171 |
return $lastName . 'а';
|
|
|
172 |
}
|
|
|
173 |
|
|
|
174 |
if (static::GENDER_MALE === $gender) {
|
|
|
175 |
return $lastName;
|
|
|
176 |
}
|
|
|
177 |
|
|
|
178 |
return $lastName . static::randomElement(static::$lastNameSuffix);
|
|
|
179 |
}
|
|
|
180 |
}
|