2016-07-27 9 views
0

device-detector을 사용하여 장치 검색 시스템을 설정하려고합니다. 내가 그것을 설정하는 동안 오류가 점점 그 설명서를 따르고 있습니다. 작곡가를 사용하여 필요한 파일을 다운로드했습니다. 필자는 repo를 복제하여 필요한 파일을 다운로드하고이를 공급 업체의 별도 폴더에 보관했습니다.PSR-4를 사용하여 클래스를 자동로드하는 방법은 무엇입니까?

질문 : 프로젝트 요구 사항에 piwik/device-detector를 추가하기 만하면됩니다. 그러나 실행시 오류가 발생합니다.

공지 사항 : 정의되지 않은 변수 : C에서의 userAgent : \ WAMP \ www가 \ trackme \ track.php

주 라인 11 : 나는 자동 로딩 비교적 새로운 오전.

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 [업데이트]를

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

파일'trackme \ track.php'과'$ userAgent'가 오는 곳에서 12 행과 14 행을 보여줍니다. – Justinas

+0

@Justinas $ userAgent는 다운로드 한 라이브러리의 클래스 파일에서옵니다. – Ayan

답변

0

셋업은 권리와 클래스 파일이 올바르게 있습니다. 코드가 14 행까지 처리된다는 것을 알 수 있습니다. 이는 10 행과 12 행의 클래스가 있음을 의미합니다.

누락 된 생각은 설치되지 않은 doctrine/cache 패키지입니다. Composer 오토로더에 설치되지 않았으므로 알 수없는 "suggest"섹션에 넣었습니다. 문서의 자세한 내용은 여기를 참조하십시오. https://getcomposer.org/doc/04-schema.md#suggest

"필수"섹션으로 이동해야합니다.

내가 $userAgent도 그것을 사용 :

업데이트 1을 주석으로 이전되도록 정의하는 것이 좋습니다 것 : 위해

piwik 사용 에하는 것이 아니라,이 "필요"로 이동 섹션 . 먼저 "자동로드"섹션을 완전히 제거하십시오.

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

는 그런 부분을 "필요"에 추가합니다
composer require piwik/device-detector 

전화 : 즉,이 부분입니다.

+0

$ userAgent는 클래스 파일에서 오는 것처럼 어디에 정의해야합니까? – Ayan

+0

필자는 불필요한 패키지에 대해 주석을 달았고 그 오류를 제거했지만 '$ userAgent'를 정의 할 수 없다는 사실은 IDE에서 오류가 발생한다고 선언하는 것과 같습니다. – Ayan

+1

piwik/device-detector를 개발 중이거나 사용하려고하십니까? piwik/device-detector는 composer.json의 "require"섹션에 있어야합니다. "자동로드"섹션은 자체 클래스 또는 Composer가 관리하지 않는 클래스 용입니다. '$ userAgent'에 대해 묻는 것은 완전히 다른 질문입니다 ...어쨌든'$ userAgent = $ _SERVER [ 'HTTP_USER_AGENT'];'를 사용할 수 있다고 가정합니다. – jirka