How to use Piwik device detector in php project?

I want to use the php device detector , which is part of the famous Piwik project, but I cannot figure out how to enable and use the code in my php code? I do not want to use a 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 that will not 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 
+6
source share
3 answers
 // 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 it. Works awesome. Faster than anything else. 
+7
source

For those who don't use the autoloader, here is a solution that works with Device Detector version 3.7 based on Erick's answer for previous versions:

 //Same as before, add this to the top of DeviceDetector.php in this order: namespace DeviceDetector; 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.php'); require_once(dirname(__FILE__) . '/Yaml/Parser.php'); require_once(dirname(__FILE__) . '/Yaml/Spyc.php'); //Same as before, you'll need to find your own copy of spyc.php. Here is how I add it (pulls from a directory above the library): require_once(realpath(dirname(__FILE__) . '/..') . '/spyc.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'); 
+2
source

I worked well for me. For DeviceDetector version 3.7.3:

 namespace DeviceDetector; 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'); require_once(dirname(__FILE__) . '/Parser/Client/Browser/Engine/Version.php'); require_once(dirname(__FILE__) . '/Parser/Client/Browser.php'); require_once(dirname(__FILE__) . '/Yaml/Parser.php'); require_once(dirname(__FILE__) . '/Yaml/Spyc.php'); //Same as before, you'll need to find your own copy of spyc.php. Here is how I add it (pulls from a directory above the library): require_once(realpath(dirname(__FILE__) . '/..') . '/spyc.php'); //Add as the first line of addClientParser(): require_once(dirname(__FILE__) . '/Parser/Client/FeedReader.php'); require_once(dirname(__FILE__) . '/Parser/Client/MobileApp.php'); require_once(dirname(__FILE__) . '/Parser/Client/MediaPlayer.php'); require_once(dirname(__FILE__) . '/Parser/Client/PIM.php'); require_once(dirname(__FILE__) . '/Parser/Client/Browser.php'); require_once(dirname(__FILE__) . '/Parser/Client/Library.php'); //Add as the first line of addDeviceParser(): require_once(dirname(__FILE__) . '/Parser/Device/HbbTv.php'); require_once(dirname(__FILE__) . '/Parser/Device/Console.php'); require_once(dirname(__FILE__) . '/Parser/Device/CarBrowser.php'); require_once(dirname(__FILE__) . '/Parser/Device/Camera.php'); require_once(dirname(__FILE__) . '/Parser/Device/PortableMediaPlayer.php'); require_once(dirname(__FILE__) . '/Parser/Device/Mobile.php'); 
+2
source

Source: https://habr.com/ru/post/986437/


All Articles