/** * @constructor */ public function __construct() { $mongo = Registry::get("MongoDB"); if (!$mongo) { $m = new MongoClient(); $mongo = $m->stats; Registry::set("MongoDB", $mongo); } $parser = Registry::get("UAParser"); if (!$parser) { $parser = UAParser\Parser::create(); Registry::set("UAParser", $parser); } }
<?php require __DIR__ . '/../../vendor/autoload.php'; $testFile = __DIR__ . '/useragents.txt'; $tests = file($testFile); $count = count($tests); echo "Read {$count} agents from {$testFile}\nRunning benchmark, please wait..."; $parser = new UAParser\Parser(); $start = microtime(true); foreach ($tests as $agent) { $parser->parse($agent); } $time = microtime(true) - $start; echo "\nParsed {$count} agents in {$time} seconds\n";
/** * Create a new BrowserInfo object for the given user agent string. * Instances may not be created directly, use the static newFromContext method instead. * * @param string $userAgent */ protected function parseUserAgent($userAgent) { /** * A ua-parser object looks like this (simplified version of the actual object) * @source https://github.com/tobie/ua-parser * * ua->family: Chrome * ua->major: 24 * ua->minor: 0 * ua->patch: 1312 * os->family: Mac OS X * os->major: 10 * os->minor: 8 * os->patch: 2 * device->family: * toFullString: Chrome 24.0.1312/Mac OS X 10.8.2 */ $parser = UAParser\Parser::create(); $parsed = $parser->parse($userAgent); $uaData = new stdClass(); $uaData->browserFamily = $parsed->ua->family; $uaData->browserMajor = $parsed->ua->major; $uaData->browserMinor = $parsed->ua->minor; $uaData->browserPatch = $parsed->ua->patch; $uaData->osFamily = $parsed->os->family; $uaData->osMajor = $parsed->os->major; $uaData->osMinor = $parsed->os->minor; $uaData->osPatch = $parsed->os->patch; $uaData->deviceFamily = $parsed->device->family; $uaData->deviceMajor = null; // deprecated $uaData->deviceMinor = null; // deprecated $uaData->displayInfo = self::getDisplayInfo($uaData); $this->rawUserAgent = $userAgent; $this->uaData = $uaData; return $this; }