UserAgentParser\Provider\HandsetDetection::parse PHP Method

parse() public method

public parse ( $userAgent, array $headers = [] )
$headers array
    public function parse($userAgent, array $headers = [])
    {
        $headers['User-Agent'] = $userAgent;
        $parser = $this->getParser();
        // $config = $parser->config;
        // $parser = new Parser\HD4($config);
        /*
         * No result found?
         */
        if ($parser->deviceDetect($headers) !== true) {
            throw new NoResultFoundException('No result found for user agent: ' . $userAgent);
        }
        $resultRaw = $parser->getReply();
        /*
         * No result found?
         */
        if (!isset($resultRaw['hd_specs']) || $this->hasResult($resultRaw['hd_specs']) !== true) {
            throw new NoResultFoundException('No result found for user agent: ' . $userAgent);
        }
        /*
         * Hydrate the model
         */
        $result = new Model\UserAgent();
        $result->setProviderResultRaw($resultRaw['hd_specs']);
        /*
         * hydrate the result
         */
        $this->hydrateBrowser($result->getBrowser(), $resultRaw['hd_specs']);
        // renderingEngine not available
        $this->hydrateOperatingSystem($result->getOperatingSystem(), $resultRaw['hd_specs']);
        $this->hydrateDevice($result->getDevice(), $resultRaw['hd_specs']);
        return $result;
    }

Usage Example

 public function testRealResult()
 {
     $provider = new HandsetDetection($this->getParser());
     $result = $provider->parse('Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3');
     $this->assertEquals(['browser' => ['name' => 'Mobile Safari', 'version' => ['major' => 5, 'minor' => 1, 'patch' => null, 'alias' => null, 'complete' => '5.1']], 'renderingEngine' => ['name' => null, 'version' => ['major' => null, 'minor' => null, 'patch' => null, 'alias' => null, 'complete' => null]], 'operatingSystem' => ['name' => 'iOS', 'version' => ['major' => 5, 'minor' => 0, 'patch' => null, 'alias' => null, 'complete' => '5.0']], 'device' => ['model' => 'iPhone', 'brand' => 'Apple', 'type' => null, 'isMobile' => null, 'isTouch' => null], 'bot' => ['isBot' => null, 'name' => null, 'type' => null]], $result->toArray());
     /*
      * Test the raw result
      */
     $rawResult = $result->getProviderResultRaw();
     $this->assertInternalType('array', $rawResult);
     $this->assertCount(48, $rawResult);
     $this->assertArrayHasKey('general_vendor', $rawResult);
     $this->assertArrayHasKey('general_model', $rawResult);
     $this->assertArrayHasKey('general_platform', $rawResult);
     $this->assertArrayHasKey('general_platform_version', $rawResult);
     $this->assertArrayHasKey('general_browser', $rawResult);
     $this->assertArrayHasKey('general_browser_version', $rawResult);
 }
All Usage Examples Of UserAgentParser\Provider\HandsetDetection::parse