Conditions | 1 |
Paths | 1 |
Total Lines | 256 |
Code Lines | 187 |
Lines | 0 |
Ratio | 0 % |
Changes | 1 | ||
Bugs | 0 | Features | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | <?php |
||
94 | public function regex(): array |
||
95 | { |
||
96 | return [ |
||
97 | [ |
||
98 | |||
99 | '/\((ipad|playbook);[\w\s\),;-]+(rim|apple)/i' // iPad/PlayBook |
||
100 | ], [self::MODEL, self::VENDOR, [self::TYPE, self::TABLET]], [ |
||
101 | |||
102 | '/applecoremedia\/[\w\.]+ \((ipad)/' // iPad |
||
103 | ], [self::MODEL, [self::VENDOR, 'Apple'], [self::TYPE, self::TABLET]], [ |
||
104 | |||
105 | '/(apple\s{0,1}tv)/i' // Apple TV |
||
106 | ], [[self::MODEL, 'Apple TV'], [self::VENDOR, 'Apple']], [ |
||
107 | |||
108 | '/(archos)\s(gamepad2?)/i', // Archos |
||
109 | '/(hp).+(touchpad)/i', // HP TouchPad |
||
110 | '/(hp).+(tablet)/i', // HP Tablet |
||
111 | '/(kindle)\/([\w\.]+)/i', // Kindle |
||
112 | '/\s(nook)[\w\s]+build\/(\w+)/i', // Nook |
||
113 | '/(dell)\s(strea[kpr\s\d]*[\dko])/i' // Dell Streak |
||
114 | ], [self::VENDOR, self::MODEL, [self::TYPE, self::TABLET]], [ |
||
115 | |||
116 | '/(kf[A-z]+)\sbuild\/.+silk\//i' // Kindle Fire HD |
||
117 | ], [self::MODEL, [self::VENDOR, 'Amazon'], [self::TYPE, self::TABLET]], [ |
||
118 | '/(sd|kf)[0349hijorstuw]+\sbuild\/.+silk\//i' // Fire Phone |
||
119 | ], [[self::MODEL, '__str', 'amazon.model'], [self::VENDOR, 'Amazon'], [self::TYPE, self::MOBILE]], [ |
||
120 | '/android.+aft([bms])\sbuild/i' // Fire TV |
||
121 | ], [self::MODEL, [self::VENDOR, 'Amazon'], [self::TYPE, self::SMART_TV]], [ |
||
122 | |||
123 | '/\((ip[honed|\s\w*]+);.+(apple)/i' // iPod/iPhone |
||
124 | ], [self::MODEL, self::VENDOR, [self::TYPE, self::MOBILE]], [ |
||
125 | '/\((ip[honed|\s\w*]+);/i' // iPod/iPhone |
||
126 | ], [self::MODEL, [self::VENDOR, 'Apple'], [self::TYPE, self::MOBILE]], [ |
||
127 | |||
128 | '/(blackberry)[\s-]?(\w+)/i', // BlackBerry |
||
129 | '/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i', |
||
130 | // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron |
||
131 | '/(hp)\s([\w\s]+\w)/i', // HP iPAQ |
||
132 | '/(asus)-?(\w+)/i' // Asus |
||
133 | ], [self::VENDOR, self::MODEL, [self::TYPE, self::MOBILE]], [ |
||
134 | '/\(bb10;\s(\w+)/i' // BlackBerry 10 |
||
135 | ], [self::MODEL, [self::VENDOR, 'BlackBerry'], [self::TYPE, self::MOBILE]], [ |
||
136 | // Asus Tablets |
||
137 | '/android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone|p00c)/i' |
||
138 | ], [self::MODEL, [self::VENDOR, 'Asus'], [self::TYPE, self::TABLET]], [ |
||
139 | |||
140 | '/(sony)\s(tablet\s[ps])\sbuild\//i', // Sony |
||
141 | '/(sony)?(?:sgp.+)\sbuild\//i' |
||
142 | ], [[self::VENDOR, 'Sony'], [self::MODEL, 'Xperia Tablet'], [self::TYPE, self::TABLET]], [ |
||
143 | '/android.+\s([c-g]\d{4}|so[-l]\w+)(?=\sbuild\/|\).+chrome\/(?![1-6]{0,1}\d\.))/i' |
||
144 | ], [self::MODEL, [self::VENDOR, 'Sony'], [self::TYPE, self::MOBILE]], [ |
||
145 | |||
146 | '/\s(ouya)\s/i', // Ouya |
||
147 | '/(nintendo)\s([wids3u]+)/i' // Nintendo |
||
148 | ], [self::VENDOR, self::MODEL, [self::TYPE, self::CONSOLE]], [ |
||
149 | |||
150 | '/android.+;\s(shield)\sbuild/i' // Nvidia |
||
151 | ], [self::MODEL, [self::VENDOR, 'Nvidia'], [self::TYPE, self::CONSOLE]], [ |
||
152 | |||
153 | '/(playstation\s[34portablevi]+)/i' // Playstation |
||
154 | ], [self::MODEL, [self::VENDOR, 'Sony'], [self::TYPE, self::CONSOLE]], [ |
||
155 | |||
156 | '/(sprint\s(\w+))/i' // Sprint Phones |
||
157 | ], [[self::VENDOR, '__str', 'sprint.vendor'], [self::MODEL, '__str', 'sprint.model'], [self::TYPE, self::MOBILE]], [ |
||
158 | |||
159 | '/(htc)[;_\s-]+([\w\s]+(?=\)|\sbuild)|\w+)/i', // HTC |
||
160 | '/(zte)-(\w*)/i', // ZTE |
||
161 | '/(alcatel|geeksphone|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i' |
||
162 | // Alcatel/GeeksPhone/Nexian/Panasonic/Sony |
||
163 | ], [self::VENDOR, [self::MODEL, '/_/', ' '], [self::TYPE, self::MOBILE]], [ |
||
164 | |||
165 | '/(nexus\s9)/i' // HTC Nexus 9 |
||
166 | ], [self::MODEL, [self::VENDOR, 'HTC'], [self::TYPE, self::TABLET]], [ |
||
167 | |||
168 | '/d\/huawei([\w\s-]+)[;\)]/i', |
||
169 | '/(nexus\s6p)/i' // Huawei |
||
170 | ], [self::MODEL, [self::VENDOR, 'Huawei'], [self::TYPE, self::MOBILE]], [ |
||
171 | |||
172 | '/(microsoft);\s(lumia[\s\w]+)/i' // Microsoft Lumia |
||
173 | ], [self::VENDOR, self::MODEL, [self::TYPE, self::MOBILE]], [ |
||
174 | |||
175 | '/[\s\(;](xbox(?:\sone)?)[\s\);]/i' // Microsoft Xbox |
||
176 | ], [self::MODEL, [self::VENDOR, 'Microsoft'], [self::TYPE, self::CONSOLE]], [ |
||
177 | '/(kin\.[onetw]{3})/i' // Microsoft Kin |
||
178 | ], [[self::MODEL, '/\./', ' '], [self::VENDOR, 'Microsoft'], [self::TYPE, self::MOBILE]], [ |
||
179 | |||
180 | // Motorola |
||
181 | '/\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)[\w\s]+build\//i', |
||
182 | '/mot[\s-]?(\w*)/i', |
||
183 | '/(XT\d{3,4}) build\//i', |
||
184 | '/(nexus\s6)/i' |
||
185 | ], [self::MODEL, [self::VENDOR, 'Motorola'], [self::TYPE, self::MOBILE]], [ |
||
186 | '/android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i' |
||
187 | ], [self::MODEL, [self::VENDOR, 'Motorola'], [self::TYPE, self::TABLET]], [ |
||
188 | |||
189 | '/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i' // HbbTV devices |
||
190 | ], [[self::VENDOR, '__trim'], [self::MODEL, '__trim'], [self::TYPE, self::SMART_TV]], [ |
||
191 | |||
192 | '/hbbtv.+maple;(\d+)/i' |
||
193 | ], [[self::MODEL, '/^/', 'SMART_TV'], [self::VENDOR, 'Samsung'], [self::TYPE, self::SMART_TV]], [ |
||
194 | |||
195 | '/\(dtv[\);].+(aquos)/i' // Sharp |
||
196 | ], [self::MODEL, [self::VENDOR, 'Sharp'], [self::TYPE, self::SMART_TV]], [ |
||
197 | |||
198 | '/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i', |
||
199 | '/((SM-T\w+))/i' |
||
200 | ], [[self::VENDOR, 'Samsung'], self::MODEL, [self::TYPE, self::TABLET]], [ // Samsung |
||
201 | '/smart-tv.+(samsung)/i' |
||
202 | ], [self::VENDOR, [self::TYPE, self::SMART_TV], self::MODEL], [ |
||
203 | '/((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i', |
||
204 | '/(sam[sung]*)[\s-]*(\w+-?[\w-]*)/i', |
||
205 | '/sec-((sgh\w+))/i' |
||
206 | ], [[self::VENDOR, 'Samsung'], self::MODEL, [self::TYPE, self::MOBILE]], [ |
||
207 | |||
208 | '/sie-(\w*)/i' // Siemens |
||
209 | ], [self::MODEL, [self::VENDOR, 'Siemens'], [self::TYPE, self::MOBILE]], [ |
||
210 | |||
211 | '/(maemo|nokia).*(n900|lumia\s\d+)/i', // Nokia |
||
212 | '/(nokia)[\s_-]?([\w-]*)/i' |
||
213 | ], [[self::VENDOR, 'Nokia'], self::MODEL, [self::TYPE, self::MOBILE]], [ |
||
214 | |||
215 | '/android[x\d\.\s;]+\s([ab][1-7]\-?[0178a]\d\d?)/i' // Acer |
||
216 | ], [self::MODEL, [self::VENDOR, 'Acer'], [self::TYPE, self::TABLET]], [ |
||
217 | |||
218 | '/android.+([vl]k\-?\d{3})\s+build/i' // LG Tablet |
||
219 | ], [self::MODEL, [self::VENDOR, 'LG'], [self::TYPE, self::TABLET]], [ |
||
220 | '/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i' // LG Tablet |
||
221 | ], [[self::VENDOR, 'LG'], self::MODEL, [self::TYPE, self::TABLET]], [ |
||
222 | '/(lg) netcast\.tv/i' // LG SMART_TV |
||
223 | ], [self::VENDOR, self::MODEL, [self::TYPE, self::SMART_TV]], [ |
||
224 | '/(nexus\s[45])/i', // LG |
||
225 | '/lg[e;\s\/-]+(\w*)/i', |
||
226 | '/android.+lg(\-?[\d\w]+)\s+build/i' |
||
227 | ], [self::MODEL, [self::VENDOR, 'LG'], [self::TYPE, self::MOBILE]], [ |
||
228 | |||
229 | '/(lenovo)\s?(s(?:5000|6000)(?:[\w-]+)|tab(?:[\s\w]+))/i' // Lenovo tablets |
||
230 | ], [self::VENDOR, self::MODEL, [self::TYPE, self::TABLET]], [ |
||
231 | '/android.+(ideatab[a-z0-9\-\s]+)/i' // Lenovo |
||
232 | ], [self::MODEL, [self::VENDOR, 'Lenovo'], [self::TYPE, self::TABLET]], [ |
||
233 | '/(lenovo)[_\s-]?([\w-]+)/i' |
||
234 | ], [self::VENDOR, self::MODEL, [self::TYPE, self::MOBILE]], [ |
||
235 | |||
236 | '/linux;.+((jolla));/i' // Jolla |
||
237 | ], [self::VENDOR, self::MODEL, [self::TYPE, self::MOBILE]], [ |
||
238 | |||
239 | '/((pebble))app\/[\d\.]+\s/i' // Pebble |
||
240 | ], [self::VENDOR, self::MODEL, [self::TYPE, self::WEARABLE]], [ |
||
241 | |||
242 | '/android.+;\s(oppo)\s?([\w\s]+)\sbuild/i' // OPPO |
||
243 | ], [self::VENDOR, self::MODEL, [self::TYPE, self::MOBILE]], [ |
||
244 | |||
245 | '/crkey/i' // Google Chromecast |
||
246 | ], [[self::MODEL, 'Chromecast'], [self::VENDOR, 'Google']], [ |
||
247 | |||
248 | '/android.+;\s(glass)\s\d/i' // Google Glass |
||
249 | ], [self::MODEL, [self::VENDOR, 'Google'], [self::TYPE, self::WEARABLE]], [ |
||
250 | |||
251 | '/android.+;\s(pixel c)[\s)]/i' // Google Pixel C |
||
252 | ], [self::MODEL, [self::VENDOR, 'Google'], [self::TYPE, self::TABLET]], [ |
||
253 | |||
254 | '/android.+;\s(pixel( [23])?( xl)?)[\s)]/i' // Google Pixel |
||
255 | ], [self::MODEL, [self::VENDOR, 'Google'], [self::TYPE, self::MOBILE]], [ |
||
256 | |||
257 | '/android.+;\s(\w+)\s+build\/hm\1/i', // Xiaomi Hongmi 'numeric' models |
||
258 | '/android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i', // Xiaomi Hongmi |
||
259 | '/android.+(mi[\s\-_]*(?:a\d|one|one[\s_]plus|note lte)?[\s_]*(?:\d?\w?)[\s_]*(?:plus)?)\s+build/i', |
||
260 | // Xiaomi Mi |
||
261 | '/android.+(redmi[\s\-_]*(?:note)?(?:[\s_]*[\w\s]+))\s+build/i' // Redmi Phones |
||
262 | ], [[self::MODEL, '/_/', ' '], [self::VENDOR, 'Xiaomi'], [self::TYPE, self::MOBILE]], [ |
||
263 | '/android.+(mi[\s\-_]*(?:pad)(?:[\s_]*[\w\s]+))\s+build/i' // Mi Pad tablets |
||
264 | ], [[self::MODEL, '/_/', ' '], [self::VENDOR, 'Xiaomi'], [self::TYPE, self::TABLET]], [ |
||
265 | '/android.+;\s(m[1-5]\snote)\sbuild/i' // Meizu |
||
266 | ], [self::MODEL, [self::VENDOR, 'Meizu'], [self::TYPE, self::MOBILE]], [ |
||
267 | '/(mz)-([\w-]{2,})/i' |
||
268 | ], [[self::VENDOR, 'Meizu'], self::MODEL, [self::TYPE, self::MOBILE]], [ |
||
269 | |||
270 | '/android.+a000(1)\s+build/i', // OnePlus |
||
271 | '/android.+oneplus\s(a\d{4})\s+build/i' |
||
272 | ], [self::MODEL, [self::VENDOR, 'OnePlus'], [self::TYPE, self::MOBILE]], [ |
||
273 | |||
274 | '/android.+[;\/]\s*(RCT[\d\w]+)\s+build/i' // RCA Tablets |
||
275 | ], [self::MODEL, [self::VENDOR, 'RCA'], [self::TYPE, self::TABLET]], [ |
||
276 | |||
277 | '/android.+[;\/\s]+(Venue[\d\s]{2,7})\s+build/i' // Dell Venue Tablets |
||
278 | ], [self::MODEL, [self::VENDOR, 'Dell'], [self::TYPE, self::TABLET]], [ |
||
279 | |||
280 | '/android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i' // Verizon Tablet |
||
281 | ], [self::MODEL, [self::VENDOR, 'Verizon'], [self::TYPE, self::TABLET]], [ |
||
282 | |||
283 | '/android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i' // Barnes & Noble Tablet |
||
284 | ], [[self::VENDOR, 'Barnes & Noble'], self::MODEL, [self::TYPE, self::TABLET]], [ |
||
285 | |||
286 | '/android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i' // Barnes & Noble Tablet |
||
287 | ], [self::MODEL, [self::VENDOR, 'NuVision'], [self::TYPE, self::TABLET]], [ |
||
288 | |||
289 | '/android.+;\s(k88)\sbuild/i' // ZTE K Series Tablet |
||
290 | ], [self::MODEL, [self::VENDOR, 'ZTE'], [self::TYPE, self::TABLET]], [ |
||
291 | |||
292 | '/android.+[;\/]\s*(gen\d{3})\s+build.*49h/i' // Swiss GEN Mobile |
||
293 | ], [self::MODEL, [self::VENDOR, 'Swiss'], [self::TYPE, self::MOBILE]], [ |
||
294 | |||
295 | '/android.+[;\/]\s*(zur\d{3})\s+build/i' // Swiss ZUR Tablet |
||
296 | ], [self::MODEL, [self::VENDOR, 'Swiss'], [self::TYPE, self::TABLET]], [ |
||
297 | |||
298 | '/android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i' // Zeki Tablets |
||
299 | ], [self::MODEL, [self::VENDOR, 'Zeki'], [self::TYPE, self::TABLET]], [ |
||
300 | |||
301 | '/(android).+[;\/]\s+([YR]\d{2})\s+build/i', |
||
302 | '/android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(\w{5})\sbuild/i' // Dragon Touch Tablet |
||
303 | ], [[self::VENDOR, 'Dragon Touch'], self::MODEL, [self::TYPE, self::TABLET]], [ |
||
304 | |||
305 | '/android.+[;\/]\s*(NS-?\w{0,9})\sbuild/i' // Insignia Tablets |
||
306 | ], [self::MODEL, [self::VENDOR, 'Insignia'], [self::TYPE, self::TABLET]], [ |
||
307 | |||
308 | '/android.+[;\/]\s*((NX|Next)-?\w{0,9})\s+build/i' // NextBook Tablets |
||
309 | ], [self::MODEL, [self::VENDOR, 'NextBook'], [self::TYPE, self::TABLET]], [ |
||
310 | |||
311 | '/android.+[;\/]\s*(Xtreme\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i' |
||
312 | ], [[self::VENDOR, 'Voice'], self::MODEL, [self::TYPE, self::MOBILE]], [ // Voice Xtreme Phones |
||
313 | |||
314 | '/android.+[;\/]\s*(LVTEL\-)?(V1[12])\s+build/i' // LvTel Phones |
||
315 | ], [[self::VENDOR, 'LvTel'], self::MODEL, [self::TYPE, self::MOBILE]], [ |
||
316 | |||
317 | '/android.+;\s(PH-1)\s/i' |
||
318 | ], [self::MODEL, [self::VENDOR, 'Essential'], [self::TYPE, self::MOBILE]], [ // Essential PH-1 |
||
319 | |||
320 | '/android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i' // Envizen Tablets |
||
321 | ], [self::MODEL, [self::VENDOR, 'Envizen'], [self::TYPE, self::TABLET]], [ |
||
322 | |||
323 | '/android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(\w{1,9})\s+build/i' // Le Pan Tablets |
||
324 | ], [self::VENDOR, self::MODEL, [self::TYPE, self::TABLET]], [ |
||
325 | |||
326 | '/android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i' // MachSpeed Tablets |
||
327 | ], [self::MODEL, [self::VENDOR, 'MachSpeed'], [self::TYPE, self::TABLET]], [ |
||
328 | |||
329 | '/android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i' // Trinity Tablets |
||
330 | ], [self::VENDOR, self::MODEL, [self::TYPE, self::TABLET]], [ |
||
331 | |||
332 | '/android.+[;\/]\s*TU_(1491)\s+build/i' // Rotor Tablets |
||
333 | ], [self::MODEL, [self::VENDOR, 'Rotor'], [self::TYPE, self::TABLET]], [ |
||
334 | |||
335 | '/android.+(KS(.+))\s+build/i' // Amazon Kindle Tablets |
||
336 | ], [self::MODEL, [self::VENDOR, 'Amazon'], [self::TYPE, self::TABLET]], [ |
||
337 | |||
338 | '/android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i' // Gigaset Tablets |
||
339 | ], [self::VENDOR, self::MODEL, [self::TYPE, self::TABLET]], [ |
||
340 | |||
341 | '/\s(tablet|tab)[;\/]/i', // Unidentifiable Tablet |
||
342 | '/\s(mobile)(?:[;\/]|\ssafari)/i' // Unidentifiable Mobile |
||
343 | ], [[self::TYPE, '__lowerize'], self::VENDOR, self::MODEL], [ |
||
344 | |||
345 | '/[\s\/\(](smart-?tv)[;\)]/i' // SMART_TV |
||
346 | ], [[self::TYPE, self::SMART_TV]], [ |
||
347 | |||
348 | '/(android[\w\.\s\-]{0,9});.+build/i' // Generic Android Device |
||
349 | ], [self::MODEL, [self::VENDOR, 'Generic']] |
||
350 | ]; |
||
353 |