Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Faker\Provider\zh_TW;
4
 
5
class Person extends \Faker\Provider\Person
6
{
7
    /**
8
     * @see https://zh.wikipedia.org/wiki/%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E5%9C%8B%E6%B0%91%E8%BA%AB%E5%88%86%E8%AD%89
9
     */
10
    public static $idBirthplaceCode = [
11
        'A' => 10,
12
        'B' => 11,
13
        'C' => 12,
14
        'D' => 13,
15
        'E' => 14,
16
        'F' => 15,
17
        'G' => 16,
18
        'H' => 17,
19
        'I' => 34,
20
        'J' => 18,
21
        'K' => 19,
22
        'M' => 21,
23
        'N' => 22,
24
        'O' => 35,
25
        'P' => 23,
26
        'Q' => 24,
27
        'T' => 27,
28
        'U' => 28,
29
        'V' => 29,
30
        'W' => 32,
31
        'X' => 30,
32
        'Z' => 33,
33
    ];
34
 
35
    /**
36
     * @see https://zh.wikipedia.org/wiki/%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E5%9C%8B%E6%B0%91%E8%BA%AB%E5%88%86%E8%AD%89
37
     */
38
    public static $idDigitValidator = [1, 9, 8, 7, 6, 5, 4, 3, 2, 1, 1];
39
 
40
    protected static $maleNameFormats = [
41
        '{{lastName}}{{firstNameMale}}',
42
    ];
43
 
44
    protected static $femaleNameFormats = [
45
        '{{lastName}}{{firstNameFemale}}',
46
    ];
47
 
48
    protected static $titleMale = ['先生', '博士', '教授'];
49
    protected static $titleFemale = ['小姐', '太太', '博士', '教授'];
50
 
51
    /**
52
     * @see http://zh.wikipedia.org/wiki/%E7%99%BE%E5%AE%B6%E5%A7%93
53
     */
54
    protected static $lastName = [
55
        '趙', '錢', '孫', '李', '周', '吳', '鄭', '王', '馮',
56
        '陳', '褚', '衛', '蔣', '沈', '韓', '楊', '朱', '秦',
57
        '尤', '許', '何', '呂', '施', '張', '孔', '曹', '嚴',
58
        '華', '金', '魏', '陶', '姜', '戚', '謝', '鄒', '喻',
59
        '柏', '水', '竇', '章', '雲', '蘇', '潘', '葛',
60
        '奚', '范', '彭', '郎', '魯', '韋', '昌', '馬',
61
        '苗', '鳳', '花', '方', '俞', '任', '袁', '柳',
62
        '酆', '鮑', '史', '唐', '費', '廉', '岑', '薛',
63
        '雷', '賀', '倪', '湯', '滕', '殷', '羅', '畢',
64
        '郝', '鄔', '安', '常', '樂', '于', '時', '傅',
65
        '皮', '卞', '齊', '康', '伍', '余', '元', '卜',
66
        '顧', '孟', '平', '黃', '和', '穆', '蕭', '尹',
67
        '姚', '邵', '湛', '汪', '祁', '毛', '禹', '狄',
68
        '米', '貝', '明', '臧', '計', '伏', '成', '戴',
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
        '濮陽', '淳于', '單于', '太叔', '申屠', '公孫',
109
        '仲孫', '軒轅', '令狐', '鍾離', '宇文', '長孫',
110
        '慕容', '鮮于', '閭丘', '司徒', '司空', '亓官',
111
        '司寇', '仉', '督', '子車', '顓孫', '端木', '巫馬',
112
        '公西', '漆雕', '樂正', '壤駟', '公良', '拓跋',
113
        '夾谷', '宰父', '穀梁', '晉', '楚', '閆', '法',
114
        '汝', '鄢', '涂', '欽', '段干', '百里', '東郭',
115
        '南門', '呼延', '歸', '海', '羊舌', '微生', '岳',
116
        '帥', '緱', '亢', '況', '後', '有', '琴', '梁丘',
117
        '左丘', '東門', '西門', '商', '牟', '佘', '佴',
118
        '伯', '賞', '南宮', '墨', '哈', '譙', '笪', '年',
119
        '愛', '陽', '佟', '第五', '言', '福',
120
    ];
121
 
122
    /**
123
     * @see http://technology.chtsai.org/namefreq/
124
     */
125
    protected static $characterMale = [
126
        '佳', '俊', '信', '偉', '傑', '冠', '君', '哲',
127
        '嘉', '威', '宇', '安', '宏', '宗', '宜', '家',
128
        '庭', '廷', '建', '彥', '心', '志', '思', '承',
129
        '文', '柏', '樺', '瑋', '穎', '美', '翰', '華',
130
        '詩', '豪', '賢', '軒', '銘', '霖',
131
    ];
132
 
133
    protected static $characterFemale = [
134
        '伶', '佩', '佳', '依', '儀', '冠', '君', '嘉',
135
        '如', '娟', '婉', '婷', '安', '宜', '家', '庭',
136
        '心', '思', '怡', '惠', '慧', '文', '欣', '涵',
137
        '淑', '玲', '珊', '琪', '琬', '瑜', '穎', '筑',
138
        '筱', '美', '芬', '芳', '華', '萍', '萱', '蓉',
139
        '詩', '貞', '郁', '鈺', '雅', '雯', '靜', '馨',
140
    ];
141
 
142
    public static function randomName($pool, $n)
143
    {
144
        $name = '';
145
 
146
        for ($i = 0; $i < $n; ++$i) {
147
            $name .= static::randomElement($pool);
148
        }
149
 
150
        return $name;
151
    }
152
 
153
    public static function firstNameMale()
154
    {
155
        return static::randomName(static::$characterMale, self::numberBetween(1, 2));
156
    }
157
 
158
    public static function firstNameFemale()
159
    {
160
        return static::randomName(static::$characterFemale, self::numberBetween(1, 2));
161
    }
162
 
163
    public static function suffix()
164
    {
165
        return '';
166
    }
167
 
168
    /**
169
     * @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE
170
     *
171
     * @see https://en.wikipedia.org/wiki/National_Identification_Card_(Republic_of_China)
172
     *
173
     * @return string Length 10 alphanumeric characters, begins with 1 latin character (birthplace),
174
     *                1 number (gender) and then 8 numbers (the last one is check digit).
175
     */
176
    public function personalIdentityNumber($gender = null)
177
    {
178
        $birthPlace = self::randomKey(self::$idBirthplaceCode);
179
        $birthPlaceCode = self::$idBirthplaceCode[$birthPlace];
180
 
181
        $gender = ($gender != null) ? $gender : self::randomElement([self::GENDER_FEMALE, self::GENDER_MALE]);
182
        $genderCode = ($gender === self::GENDER_MALE) ? 1 : 2;
183
 
184
        $randomNumberCode = self::randomNumber(7, true);
185
 
186
        $codes = str_split($birthPlaceCode . $genderCode . $randomNumberCode);
187
        $total = 0;
188
 
189
        foreach ($codes as $key => $code) {
190
            $total += $code * self::$idDigitValidator[$key];
191
        }
192
 
193
        $checkSumDigit = 10 - ($total % 10);
194
 
195
        if ($checkSumDigit == 10) {
196
            $checkSumDigit = 0;
197
        }
198
 
199
        return $birthPlace . $genderCode . $randomNumberCode . $checkSumDigit;
200
    }
201
}