Address.php
5 years ago
Company.php
5 years ago
Internet.php
5 years ago
Payment.php
5 years ago
Person.php
5 years ago
PhoneNumber.php
5 years ago
Text.php
5 years ago
Person.php
234 lines
| 1 | <?php |
| 2 | |
| 3 | namespace Faker\Provider\pl_PL; |
| 4 | |
| 5 | /** |
| 6 | * Most popular first and last names published by Ministry of the Interior: |
| 7 | * @link https://msw.gov.pl/pl/sprawy-obywatelskie/ewidencja-ludnosci-dowo/statystyki-imion-i-nazw |
| 8 | */ |
| 9 | class Person extends \Faker\Provider\Person |
| 10 | { |
| 11 | protected static $lastNameFormat = array( |
| 12 | '{{lastNameMale}}', |
| 13 | '{{lastNameFemale}}', |
| 14 | ); |
| 15 | |
| 16 | protected static $maleNameFormats = array( |
| 17 | '{{firstNameMale}} {{lastNameMale}}', |
| 18 | '{{firstNameMale}} {{lastNameMale}}', |
| 19 | '{{firstNameMale}} {{lastNameMale}}', |
| 20 | '{{title}} {{firstNameMale}} {{lastNameMale}}', |
| 21 | '{{firstNameMale}} {{lastNameMale}}', |
| 22 | '{{title}} {{title}} {{firstNameMale}} {{lastNameMale}}', |
| 23 | ); |
| 24 | |
| 25 | protected static $femaleNameFormats = array( |
| 26 | '{{firstNameFemale}} {{lastNameFemale}}', |
| 27 | '{{firstNameFemale}} {{lastNameFemale}}', |
| 28 | '{{firstNameFemale}} {{lastNameFemale}}', |
| 29 | '{{title}} {{firstNameFemale}} {{lastNameFemale}}', |
| 30 | '{{firstNameFemale}} {{lastNameFemale}}', |
| 31 | '{{title}} {{title}} {{firstNameFemale}} {{lastNameFemale}}', |
| 32 | ); |
| 33 | |
| 34 | protected static $firstNameMale = array( |
| 35 | 'Adam', 'Adrian', 'Alan', 'Albert', 'Aleks', 'Aleksander', 'Alex', 'Andrzej', 'Antoni', 'Arkadiusz', 'Artur', |
| 36 | 'Bartek', 'Błażej', 'Borys', 'Bruno', 'Cezary', 'Cyprian', 'Damian', 'Daniel', 'Dariusz', 'Dawid', 'Dominik', |
| 37 | 'Emil', 'Ernest', 'Eryk', 'Fabian', 'Filip', 'Franciszek', 'Fryderyk', 'Gabriel', 'Grzegorz', 'Gustaw', 'Hubert', |
| 38 | 'Ignacy', 'Igor', 'Iwo', 'Jacek', 'Jakub', 'Jan', 'Jeremi', 'Jerzy', 'Jędrzej', 'Józef', 'Julian', 'Juliusz', |
| 39 | 'Kacper', 'Kajetan', 'Kamil', 'Karol', 'Kazimierz', 'Konrad', 'Konstanty', 'Kornel', 'Krystian', 'Krzysztof', 'Ksawery', |
| 40 | 'Leon', 'Leonard', 'Łukasz', 'Maciej', 'Maks', 'Maksymilian', 'Marcel', 'Marcin', 'Marek', 'Mariusz', 'Mateusz', 'Maurycy', |
| 41 | 'Michał', 'Mieszko', 'Mikołaj', 'Miłosz', 'Natan', 'Nataniel', 'Nikodem', 'Norbert', 'Olaf', 'Olgierd', 'Oliwier', 'Oskar', |
| 42 | 'Patryk', 'Paweł', 'Piotr', 'Przemysław', 'Radosław', 'Rafał', 'Robert', 'Ryszard', 'Sebastian', 'Stanisław', 'Stefan', 'Szymon', |
| 43 | 'Tadeusz', 'Tomasz', 'Tymon', 'Tymoteusz', 'Wiktor', 'Witold', 'Wojciech', |
| 44 | ); |
| 45 | |
| 46 | protected static $firstNameFemale = array( |
| 47 | 'Ada', 'Adrianna', 'Agata', 'Agnieszka', 'Aleksandra', 'Alicja', 'Amelia', 'Anastazja', 'Angelika', 'Aniela', 'Anita', |
| 48 | 'Anna', 'Anna', 'Antonina', 'Apolonia', 'Aurelia', 'Barbara', 'Bianka', 'Blanka', 'Dagmara', 'Daria', 'Dominika', 'Dorota', |
| 49 | 'Eliza', 'Elżbieta', 'Emilia', 'Ewa', 'Ewelina', 'Gabriela', 'Hanna', 'Helena', 'Ida', 'Iga', 'Inga', 'Izabela', |
| 50 | 'Jagoda', 'Janina', 'Joanna', 'Julia', 'Julianna', 'Julita', 'Justyna', 'Kaja', 'Kalina', 'Kamila', 'Karina', 'Karolina', |
| 51 | 'Katarzyna', 'Kinga', 'Klara', 'Klaudia', 'Kornelia', 'Krystyna', 'Laura', 'Lena', 'Lidia', 'Liliana', 'Liwia', 'Łucja', |
| 52 | 'Magdalena', 'Maja', 'Malwina', 'Małgorzata', 'Marcelina', 'Maria', 'Marianna', 'Marika', 'Marta', 'Martyna', 'Matylda', |
| 53 | 'Melania', 'Michalina', 'Milena', 'Monika', 'Nadia', 'Natalia', 'Natasza', 'Nela', 'Nicole', 'Nikola', 'Nina', |
| 54 | 'Olga', 'Oliwia', 'Patrycja', 'Paulina', 'Pola', 'Roksana', 'Rozalia', 'Róża', 'Sandra', 'Sara', 'Sonia', 'Sylwia', |
| 55 | 'Tola', 'Urszula', 'Weronika', 'Wiktoria', 'Zofia', 'Zuzanna', |
| 56 | ); |
| 57 | |
| 58 | protected static $lastNameMale = array( |
| 59 | 'Adamczyk', 'Adamski', 'Andrzejewski', 'Baran', 'Baranowski', 'B� |
| 60 | k', 'Błaszczyk', 'Borkowski', 'Borowski', 'Brzeziński', |
| 61 | 'Chmielewski', 'Cieślak', 'Czarnecki', 'Czerwiński', 'D� |
| 62 | browski', 'Duda', 'Dudek', 'Gajewski', 'Głowacki', 'Górski', 'Grabowski', |
| 63 | 'Jabłoński', 'Jakubowski', 'Jankowski', 'Jasiński', 'Jaworski', 'Kaczmarczyk', 'Kaczmarek', 'Kalinowski', 'Kamiński', 'Kaźmierczak', |
| 64 | 'Kołodziej', 'Konieczny', 'Kowalczyk', 'Kowalski', 'Kozłowski', 'Krajewski', 'Krawczyk', 'Król', 'Krupa', 'Kubiak', 'Kucharski', 'Kwiatkowski', |
| 65 | 'Laskowski', 'Lewandowski', 'Lis', 'Maciejewski', 'Majewski', 'Makowski', 'Malinowski', 'Marciniak', 'Mazur', 'Mazurek', 'Michalak', |
| 66 | 'Michalski', 'Mróz', 'Nowak', 'Nowakowski', 'Nowicki', 'Olszewski', 'Ostrowski', 'Pawlak', 'Pawłowski', 'Pietrzak', 'Piotrowski', 'Przybylski', |
| 67 | 'Rutkowski', 'Sadowski', 'Sawicki', 'Sikora', 'Sikorski', 'Sobczak', 'Sokołowski', 'Stępień', 'Szczepański', 'Szewczyk', 'Szulc', 'Szymański', 'Szymczak', |
| 68 | 'Tomaszewski', 'Urbański', 'Walczak', 'Wasilewski', 'Wieczorek', 'Wilk', 'Wiśniewski', 'Witkowski', 'Włodarczyk', 'Wojciechowski', |
| 69 | 'Woźniak', 'Wójcik', 'Wróbel', 'Wróblewski', 'Wysocki', 'Zaj� |
| 70 | c', 'Zakrzewski', 'Zalewski', 'Zawadzki', 'Zieliński', 'Ziółkowski', |
| 71 | ); |
| 72 | |
| 73 | protected static $lastNameFemale = array( |
| 74 | 'Adamczyk', 'Adamska', 'Andrzejewska', 'Baran', 'Baranowska', 'B� |
| 75 | k', 'Błaszczyk', 'Borkowska', 'Borowska', 'Brzezińska', |
| 76 | 'Chmielewska', 'Cieślak', 'Czarnecka', 'Czerwińska', 'D� |
| 77 | browska', 'Duda', 'Dudek', 'Gajewska', 'Głowacka', 'Górecka', 'Górska', 'Grabowska', |
| 78 | 'Jabłońska', 'Jakubowska', 'Jankowska', 'Jasińska', 'Jaworska', 'Kaczmarczyk', 'Kaczmarek', 'Kalinowska', 'Kamińska', 'Kaźmierczak', |
| 79 | 'Kołodziej', 'Kowalczyk', 'Kowalska', 'Kozłowska', 'Krajewska', 'Krawczyk', 'Król', 'Krupa', 'Kubiak', 'Kucharska', 'Kwiatkowska', |
| 80 | 'Laskowska', 'Lewandowska', 'Lis', 'Maciejewska', 'Majewska', 'Makowska', 'Malinowska', 'Marciniak', 'Mazur', 'Mazurek', 'Michalak', |
| 81 | 'Michalska', 'Mróz', 'Nowak', 'Nowakowska', 'Nowicka', 'Olszewska', 'Ostrowska', 'Pawlak', 'Pawłowska', 'Pietrzak', 'Piotrowska', 'Przybylska', |
| 82 | 'Rutkowska', 'Sadowska', 'Sawicka', 'Sikora', 'Sikorska', 'Sobczak', 'Sokołowska', 'Stępień', 'Szczepańska', 'Szewczyk', 'Szulc', 'Szymańska', 'Szymczak', |
| 83 | 'Tomaszewska', 'Urbańska', 'Walczak', 'Wasilewska', 'Wieczorek', 'Wilk', 'Wiśniewska', 'Witkowska', 'Włodarczyk', 'Wojciechowska', |
| 84 | 'Woźniak', 'Wójcik', 'Wróbel', 'Wróblewska', 'Wysocka', 'Zaj� |
| 85 | c', 'Zakrzewska', 'Zalewska', 'Zawadzka', 'Zielińska', 'Ziółkowska', |
| 86 | ); |
| 87 | |
| 88 | /** |
| 89 | * |
| 90 | * Unisex academic degree |
| 91 | * |
| 92 | * @var string |
| 93 | */ |
| 94 | protected static $title = array('mgr','inż.', 'dr', 'doc.'); |
| 95 | |
| 96 | /** |
| 97 | * @param string|null $gender 'male', 'female' or null for any |
| 98 | * @example 'Adamczyk' |
| 99 | */ |
| 100 | public function lastName($gender = null) |
| 101 | { |
| 102 | if ($gender === static::GENDER_MALE) { |
| 103 | return static::lastNameMale(); |
| 104 | } elseif ($gender === static::GENDER_FEMALE) { |
| 105 | return static::lastNameFemale(); |
| 106 | } |
| 107 | |
| 108 | return $this->generator->parse(static::randomElement(static::$lastNameFormat)); |
| 109 | } |
| 110 | |
| 111 | public static function lastNameMale() |
| 112 | { |
| 113 | return static::randomElement(static::$lastNameMale); |
| 114 | } |
| 115 | |
| 116 | public static function lastNameFemale() |
| 117 | { |
| 118 | return static::randomElement(static::$lastNameFemale); |
| 119 | } |
| 120 | |
| 121 | public function title($gender = null) |
| 122 | { |
| 123 | return static::randomElement(static::$title); |
| 124 | } |
| 125 | |
| 126 | /** |
| 127 | * replaced by specific unisex Polish title |
| 128 | */ |
| 129 | public static function titleMale() |
| 130 | { |
| 131 | return static::title(); |
| 132 | } |
| 133 | |
| 134 | /** |
| 135 | * replaced by specific unisex Polish title |
| 136 | */ |
| 137 | public static function titleFemale() |
| 138 | { |
| 139 | return static::title(); |
| 140 | } |
| 141 | |
| 142 | /** |
| 143 | * PESEL - Universal Electronic System for Registration of the Population |
| 144 | * @link http://en.wikipedia.org/wiki/PESEL |
| 145 | * @param DateTime $birthdate |
| 146 | * @param string $sex M for male or F for female |
| 147 | * @return string 11 digit number, like 44051401358 |
| 148 | */ |
| 149 | public static function pesel($birthdate = null, $sex = null) |
| 150 | { |
| 151 | if ($birthdate === null) { |
| 152 | $birthdate = \Faker\Provider\DateTime::dateTimeThisCentury(); |
| 153 | } |
| 154 | |
| 155 | $weights = array(1, 3, 7, 9, 1, 3, 7, 9, 1, 3); |
| 156 | $length = count($weights); |
| 157 | |
| 158 | $fullYear = (int) $birthdate->format('Y'); |
| 159 | $year = (int) $birthdate->format('y'); |
| 160 | $month = $birthdate->format('m') + (((int) ($fullYear/100) - 14) % 5) * 20; |
| 161 | $day = $birthdate->format('d'); |
| 162 | |
| 163 | $result = array((int) ($year / 10), $year % 10, (int) ($month / 10), $month % 10, (int) ($day / 10), $day % 10); |
| 164 | |
| 165 | for ($i = 6; $i < $length; $i++) { |
| 166 | $result[$i] = static::randomDigit(); |
| 167 | } |
| 168 | |
| 169 | $result[$length - 1] |= 1; |
| 170 | if ($sex == "F") { |
| 171 | $result[$length - 1] -= 1; |
| 172 | } |
| 173 | |
| 174 | $checksum = 0; |
| 175 | for ($i = 0; $i < $length; $i++) { |
| 176 | $checksum += $weights[$i] * $result[$i]; |
| 177 | } |
| 178 | $checksum = (10 - ($checksum % 10)) % 10; |
| 179 | $result[] = $checksum; |
| 180 | |
| 181 | return implode('', $result); |
| 182 | } |
| 183 | |
| 184 | /** |
| 185 | * National Identity Card number |
| 186 | * @link http://en.wikipedia.org/wiki/Polish_National_Identity_Card |
| 187 | * @return string 3 letters and 6 digits, like ABA300000 |
| 188 | */ |
| 189 | public static function personalIdentityNumber() |
| 190 | { |
| 191 | $range = str_split("ABCDEFGHIJKLMNPRSTUVWXYZ"); |
| 192 | $low = array("A", static::randomElement($range), static::randomElement($range)); |
| 193 | $high = array(static::randomDigit(), static::randomDigit(), static::randomDigit(), static::randomDigit(), static::randomDigit()); |
| 194 | $weights = array(7, 3, 1, 7, 3, 1, 7, 3); |
| 195 | $checksum = 0; |
| 196 | for ($i = 0, $size = count($low); $i < $size; $i++) { |
| 197 | $checksum += $weights[$i] * (ord($low[$i]) - 55); |
| 198 | } |
| 199 | for ($i = 0, $size = count($high); $i < $size; $i++) { |
| 200 | $checksum += $weights[$i+3] * $high[$i]; |
| 201 | } |
| 202 | $checksum %= 10; |
| 203 | |
| 204 | return implode('', $low).$checksum.implode('', $high); |
| 205 | } |
| 206 | |
| 207 | /** |
| 208 | * Taxpayer Identification Number (NIP in Polish) |
| 209 | * @link http://en.wikipedia.org/wiki/PESEL#Other_identifiers |
| 210 | * @link http://pl.wikipedia.org/wiki/NIP |
| 211 | * @return string 10 digit number |
| 212 | */ |
| 213 | public static function taxpayerIdentificationNumber() |
| 214 | { |
| 215 | $weights = array(6, 5, 7, 2, 3, 4, 5, 6, 7); |
| 216 | $result = array(); |
| 217 | do { |
| 218 | $result = array( |
| 219 | static::randomDigitNotNull(), static::randomDigitNotNull(), static::randomDigitNotNull(), |
| 220 | static::randomDigit(), static::randomDigit(), static::randomDigit(), |
| 221 | static::randomDigit(), static::randomDigit(), static::randomDigit(), |
| 222 | ); |
| 223 | $checksum = 0; |
| 224 | for ($i = 0, $size = count($result); $i < $size; $i++) { |
| 225 | $checksum += $weights[$i] * $result[$i]; |
| 226 | } |
| 227 | $checksum %= 11; |
| 228 | } while ($checksum == 10); |
| 229 | $result[] = $checksum; |
| 230 | |
| 231 | return implode('', $result); |
| 232 | } |
| 233 | } |
| 234 |