2016-07-27 34 views
0

Ich versuche ein Geräteerkennungssystem in meinem PHP-Skript mit device-detector einzurichten. Ich befolge seine Dokumentation, um es einzurichten, aber dabei Fehler zu bekommen. Ich habe die erforderlichen Dateien mit Composer heruntergeladen. Ich habe sogar das Repo geklont, um die benötigten Dateien herunterzuladen und in einem separaten Ordner des Anbieters zu speichern.Wie man Klassen mit PSR-4 automatisch lädt?

In der Dokumentation gefragt Fügen Sie piwik/device-detector zu Ihren Projektanforderungen hinzu, die ich tat aber Fehler auf dem Laufen es erhalten.

Notice: Undefined variable: Useragent in C: \ wamp \ www \ TrackMe \ track.php on line 11

HINWEIS: Ich bin relativ neu in der automatischen Laden.

COMPOSER.JSON

{ 
    "name": "piwik/device-detector", 
    "type": "library", 
    "description": "The Universal Device Detection library, that parses User Agents and detects devices (desktop, tablet, mobile, tv, cars, console, etc.), clients (browsers, media players, mobile apps, feed readers, libraries, etc), operating systems, devices, brands and models.", 
    "keywords": ["useragent","parser","devicedetection"], 
    "homepage": "http://piwik.org", 
    "license": "LGPL-3.0+", 
    "authors": [ 
     { 
      "name": "The Piwik Team", 
      "email": "[email protected]", 
      "homepage": "http://piwik.org/the-piwik-team/" 
     } 
    ], 
    "support": { 
     "forum": "http://forum.piwik.org/", 
     "issues": "https://github.com/piwik/device-detector/issues", 
     "wiki": "http://dev.piwik.org/", 
     "source": "https://github.com/piwik/piwik" 
    }, 
    "autoload": { 
     "psr-4": { "DeviceDetector\\": "piwik/device-detector" } 
    }, 
    "require": { 
     "php": ">=5.3.2", 
     "mustangostang/spyc": "*" 
    }, 
    "require-dev": { 
     "phpunit/phpunit": "4.1.*", 
     "fabpot/php-cs-fixer": "~1.7" 
    }, 
    "suggest": { 
     "doctrine/cache": "Can directly be used for caching purpose" 
    } 
} 

track.php [aktualisiert]

<?php 

//date_default_timezone_set('Asia/Kolkata'); 

require_once 'vendor/autoload.php'; 

use DeviceDetector\DeviceDetector; 
use DeviceDetector\Parser\Device\DeviceParserAbstract; 

DeviceParserAbstract::setVersionTruncation(DeviceParserAbstract::VERSION_TRUNCATION_NONE); 

$dd = new DeviceDetector($userAgent); 

$dd->discardBotInformation(); 

$dd->skipBotDetection(); 

$dd->parse(); 

if ($dd->isBot()) { 
    // handle bots,spiders,crawlers,... 
    $botInfo = $dd->getBot(); 
} else { 
    $clientInfo = $dd->getClient(); // holds information about browser, feed reader, media player, ... 
    $osInfo = $dd->getOs(); 
    $device = $dd->getDevice(); 
    $brand = $dd->getBrand(); 
    $model = $dd->getModel(); 
} 

echo $osInfo; 
} 
+0

Zeigen Sie das an den Zeilen 12 und 14 in der Datei 'trackme \ track.php' und woher' $ userAgent' kommt. – Justinas

+0

@Justinas $ userAgent kommt von einer Klassendatei aus der heruntergeladenen Bibliothek. – Ayan

Antwort

0

Das Setup ist richtig und Klassendateien richtig gelegen. Sie können sehen, dass Ihr Code bis Zeile 14 verarbeitet wurde. Dies bedeutet, dass Klassen in Zeile 10 und 12 gefunden werden.

Was fehlt Gedanke ist das doctrine/cache Paket, das nicht installiert wurde. Sie haben es in den "Vorschlag" -Bereich gestellt, der nicht installiert und daher dem Composer Autoloader unbekannt ist. Details siehe hier in der Dokumentation: https://getcomposer.org/doc/04-schema.md#suggest

Sie müssen es in den Abschnitt "require" verschieben, das war's.

Ich würde vorschlagen, zu definieren, dass $userAgent bevor sie verwendet wird, auch :)

Update 1 durch Kommentare:

Um Verwendung piwik nur, bewegen Sie sich auf "require" Abschnitt . Entfernen Sie zuerst den Abschnitt "Autoload" vollständig. Das ist dieser Teil:

"autoload": { 
    "psr-4": { "DeviceDetector\\": "piwik/device-detector" } 
}, 

nennen Dann

composer require piwik/device-detector 

, dass es in dem Abschnitt "erforderlich".

+0

wo sollte ich $ userAgent definieren, wie es aus einer Klassendatei kommt. – Ayan

+0

Ich habe diese unnötigen Pakete kommentiert und diese Fehler losgeworden, bin aber nicht in der Lage, $ userAgent zu definieren, da es mich in der IDE zu einem Fehler veranlaßt. – Ayan

+1

Entwickeln Sie piwik/device-detector oder versuchen Sie es einfach zu benutzen? Wenn Sie es nur verwenden, sollte piwik/device-detector eigentlich im Abschnitt "require" von composer.json sein. Der Abschnitt "Autoload" ist für Ihre eigenen Klassen oder für Klassen, die nicht von Composer verwaltet werden. Asking über $ UserAgent ist eine ganz andere Frage ...Wie auch immer, ich nehme an, Sie können '$ userAgent = $ _SERVER ['HTTP_USER_AGENT'];' verwenden. – jirka