2015-05-03 10 views
6

Voglio usare php device detector che fa parte del famoso progetto Piwik, ma non riesco a capire come includere e utilizzare il codice nel mio codice php? non voglio usare il compositore.Come utilizzare il rilevatore di dispositivi Piwik nel progetto php?

ho scritto:

<?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); 

Ma non funziona. ottengo questo errore:

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

quali errori si stanno ottenendo? – Kamran

+0

@KamranAdil i aggiorna la domanda con un messaggio di errore. –

+0

Ciao - hai avuto una risposta a questo? Voglio anche usare il rilevatore di dispositivi piwik senza compositore e tutte le altre cose piwik. – Erick

risposta

7
// 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. 
+0

lo faccio. (Io uso 'namespace' prima che sia necessario) ma l'errore rimane. ma l'errore si verifica solo in alcuni user-agent (come Konqueror in linux) come puoi vedere in [questa immagine] (http://stat-9px.rhcloud.com/asset/piwik-browser.png) –

+1

Potrebbe essere una limitazione? Una regex mancante? Ne dubito, ma non ho konq installato da nessuna parte per testare. C'è un modo per aggiornare i modelli, ma non sono sicuro di cosa sia. Forse lo risolve? – Erick

+0

sì, penso che forse un Regex mancante o qualcosa del genere. non ho il browser, ma io uso [User Agent Switcher] (https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher) componente aggiuntivo per Firefox. –

2

Per coloro che non utilizzano un caricatore automatico, ecco una soluzione che funziona con la versione Device Detector 3.7 in base alla risposta di Erick per le versioni precedenti:

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

Per me Ho lavorato bene Per DeviceDetector versione 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'); 
Problemi correlati