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\ms_MY;
4
 
5
class Miscellaneous extends \Faker\Provider\Miscellaneous
6
{
7
    /**
8
     * @see https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Malaysia
9
     */
10
    protected static $jpjNumberPlateFormats = [
11
        '{{peninsularPrefix}}{{validAlphabet}}{{validAlphabet}} {{numberSequence}}',
12
        '{{peninsularPrefix}}{{validAlphabet}}{{validAlphabet}} {{numberSequence}}',
13
        '{{peninsularPrefix}}{{validAlphabet}}{{validAlphabet}} {{numberSequence}}',
14
        '{{peninsularPrefix}}{{validAlphabet}}{{validAlphabet}} {{numberSequence}}',
15
        'W{{validAlphabet}}{{validAlphabet}} {{numberSequence}} {{validAlphabet}}',
16
        'KV {{numberSequence}} {{validAlphabet}}',
17
        '{{sarawakPrefix}} {{numberSequence}} {{validAlphabet}}',
18
        '{{sabahPrefix}} {{numberSequence}} {{validAlphabet}}',
19
        '{{specialPrefix}} {{numberSequence}}',
20
    ];
21
 
22
    /**
23
     * Some alphabet has higher frequency that coincides with the current number
24
     * of registrations. E.g. W = Wilayah Persekutuan
25
     *
26
     * @see https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Malaysia#Current_format
27
     */
28
    protected static $peninsularPrefix = [
29
        'A', 'A', 'B', 'C', 'D', 'F', 'J', 'J', 'K', 'M', 'N', 'P', 'P', 'R', 'T', 'V',
30
        'W', 'W', 'W', 'W', 'W', 'W',
31
    ];
32
 
33
    /**
34
     * @see https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Malaysia#Current_format_2
35
     */
36
    protected static $sarawakPrefix = [
37
        'QA', 'QK', 'QB', 'QC', 'QL', 'QM', 'QP', 'QR', 'QS', 'QT',
38
    ];
39
 
40
    /**
41
     * @see https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Malaysia#Current_format_3
42
     */
43
    protected static $sabahPrefix = [
44
        'SA', 'SAA', 'SAB', 'SAC', 'SB', 'SD', 'SG',
45
        'SK', 'SL', 'SS', 'SSA', 'ST', 'STA', 'SU',
46
    ];
47
 
48
    /**
49
     * @see https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Malaysia#Commemorative_plates
50
     */
51
    protected static $specialPrefix = [
52
        '1M4U',
53
        'A1M',
54
        'BAMbee',
55
        'Chancellor',
56
        'G', 'G1M', 'GP', 'GT',
57
        'Jaguh',
58
        'K1M', 'KRISS',
59
        'LOTUS',
60
        'NAAM', 'NAZA', 'NBOS',
61
        'PATRIOT', 'Perdana', 'PERFECT', 'Perodua', 'Persona', 'Proton', 'Putra', 'PUTRAJAYA',
62
        'RIMAU',
63
        'SAM', 'SAS', 'Satria', 'SMS', 'SUKOM',
64
        'T1M', 'Tiara', 'TTB',
65
        'U', 'US',
66
        'VIP',
67
        'WAJA',
68
        'XIIINAM', 'XOIC', 'XXVIASEAN', 'XXXIDB',
69
        'Y',
70
    ];
71
 
72
    /**
73
     * Chances of having an empty alphabet will be 1/24
74
     *
75
     * @see https://en.wikipedia.org/wiki/Vehicle_registration_plates_of_Malaysia#Current_format
76
     */
77
    protected static $validAlphabets = [
78
        'A', 'B', 'C', 'D', 'E', 'F',
79
        'G', 'H', 'J', 'K', 'L', 'M',
80
        'N', 'P', 'Q', 'R', 'S', 'T',
81
        'U', 'V', 'W', 'X', 'Y', '',
82
    ];
83
 
84
    /**
85
     * Return a valid Malaysia JPJ(Road Transport Department) vehicle licence plate number
86
     *
87
     * @example 'WKN 2368'
88
     *
89
     * @return string
90
     */
91
    public function jpjNumberPlate()
92
    {
93
        $formats = static::toUpper(static::lexify(static::bothify(static::randomElement(static::$jpjNumberPlateFormats))));
94
 
95
        return $this->generator->parse($formats);
96
    }
97
 
98
    /**
99
     * Return Peninsular prefix alphabet
100
     *
101
     * @example 'W'
102
     *
103
     * @return string
104
     */
105
    public static function peninsularPrefix()
106
    {
107
        return static::randomElement(static::$peninsularPrefix);
108
    }
109
 
110
    /**
111
     * Return Sarawak state prefix alphabet
112
     *
113
     * @example 'QA'
114
     *
115
     * @return string
116
     */
117
    public static function sarawakPrefix()
118
    {
119
        return static::randomElement(static::$sarawakPrefix);
120
    }
121
 
122
    /**
123
     * Return Sabah state prefix alphabet
124
     *
125
     * @example 'SA'
126
     *
127
     * @return string
128
     */
129
    public static function sabahPrefix()
130
    {
131
        return static::randomElement(static::$sabahPrefix);
132
    }
133
 
134
    /**
135
     * Return specialty licence plate prefix
136
     *
137
     * @example 'G1M'
138
     *
139
     * @return string
140
     */
141
    public static function specialPrefix()
142
    {
143
        return static::randomElement(static::$specialPrefix);
144
    }
145
 
146
    /**
147
     * Return a valid license plate alphabet
148
     *
149
     * @example 'A'
150
     *
151
     * @return string
152
     */
153
    public static function validAlphabet()
154
    {
155
        return static::randomElement(static::$validAlphabets);
156
    }
157
 
158
    /**
159
     * Return a valid number sequence between 1 and 9999
160
     *
161
     * @example '1234'
162
     *
163
     * @return int
164
     */
165
    public static function numberSequence()
166
    {
167
        return self::numberBetween(1, 9999);
168
    }
169
}