علیرضا علیرضا - 4 months ago 61
PHP Question

how to use Piwik device detector in php project?

i want to use php device detector that is part of famous Piwik project, but i can't understand how to include and use the code in my php code? i don't want to use composer.

i wrote:

<?php
include 'DeviceDetector.php';
use DeviceDetector\DeviceDetector;
use DeviceDetector\Parser\Device\DeviceParserAbstract;

$dd = new DeviceDetector($_SERVER['HTTP_USER_AGENT']);

$dd->parse();

$clientInfo = $dd->getClient();
var_dump($clientInfo);


but it doesn't work. i get this error:

Fatal error: Uncaught exception 'Exception' with message 'client parser not found' in D:\DeviceDetector.php:214
Stack trace:
#0 D:\DeviceDetector.php(136): DeviceDetector\DeviceDetector->addClientParser('FeedReader')
#1 D:\index.php(67): DeviceDetector\DeviceDetector->__construct('Mozilla/5.0 (Wi...')
#2 {main}
thrown in D:\DeviceDetector.php on line 214

Answer
// I figured it out.  Pretty easy.  Grab a copy of master and make a few mods.

// At the top of DeviceDetector.php and in this order:

namespace DeviceDetector;

require_once (dirname(__FILE__).'/spyc.php');

require_once (dirname(__FILE__).'/Cache/Cache.php');
require_once (dirname(__FILE__).'/Cache/StaticCache.php');

require_once (dirname(__FILE__).'/Parser/ParserAbstract.php');

require_once (dirname(__FILE__).'/Parser/Bot.php');
require_once (dirname(__FILE__).'/Parser/OperatingSystem.php');
require_once (dirname(__FILE__).'/Parser/VendorFragment.php');

require_once (dirname(__FILE__).'/Parser/Client/ClientParserAbstract.php');
require_once (dirname(__FILE__).'/Parser/Device/DeviceParserAbstract.php');

require_once (dirname(__FILE__).'/Parser/Client/Browser/Engine.php');

// Add as the first line of addClientParser():
        require_once (dirname(__FILE__).'/Parser/Client/'.$parser.'.php');

// Add as the first line of addDeviceParser():
        require_once (dirname(__FILE__).'/Parser/Device/'.$parser.'.php');

// You'll also have to grab a copy of spyc.php - google it - easy to find.

// That's it.  Works awesome.  Faster than anything else.
Comments