| 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 |