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