2015-02-24 38 views
0

我想用在Laravel 5圖書館名詞叫做提取器(https://packagist.org/packages/fivefilters/term-extractor)我試圖通過與作曲家使用TermExtractor在Laravel 5

composer require "fivefilters/term-extractor:*" 

我想安裝它,那麼這一步就sucessfull我找到以下目錄:vendor/fivefilters/term-extractor。以及一條線添加到composer.json:

"require": { 
     "laravel/framework": "5.0.*", 
     "fivefilters/term-extractor": "*" 
    }, 

但是從這一點我不知道如何繼續。

包是否真的可用於我的應用程序? 我如何使用術語提取器?如果我嘗試用

$extractor = new TermExtractor();

這是行不通的。

謝謝!

-

我follwed的建議由Alan風暴給定的 - 非常感謝!

  1. 運行作曲家dumpautoload

    composer dumpautoload 
    Generating autoload files 
    

似乎是罰款。

  • 運行我的代碼

    Whoops, looks like something went wrong. 
    1/1 FatalErrorException in NewsletterController.php line 81: Class 'Fivefilters\TermExtractor' not found 
    
    in NewsletterController.php line 81 
    at HandleExceptions->fatalExceptionFromError(array('type' => '1', 'message' => 'Class 'Fivefilters\TermExtractor' not found', 'file' => '/Applications/MAMP/htdocs/newsletterfeed/app/Http/Controllers/NewsletterController.php', 'line' => '81')) in HandleExceptions.php line 116 
    at HandleExceptions->handleShutdown() 
    
  • ,我們本着FINDE 81

    $extractor = new TermExtractor(); 
    

    任何建議什麼錯?非常感謝!

    +0

    「不工作」是沒有合適的錯誤說明。什麼是確切的錯誤信息?您是否包含Composer自動加載器? – Sven 2015-02-24 23:05:36

    +0

    @carl在下面更新了我的問題 - 不要忘記爲事情投票 - 它有助於確保您對未來的問題得到迴應。 – 2015-02-25 23:16:02

    回答

    0

    你所做的事是

    1. 配置您composer.json文件,以使用fivefilters/term-extractor

    2. 二手作曲到fivefilters/term-extractor包下載到您的vendor文件夾

    什麼你下一步做什麼取決於軟件包開發者如何安裝他們的軟件包來玩得很好現代PHP世界。

    如果您搜索the package on packagist,您會發現該軟件包的源代碼庫爲at BitBucket

    如果你看the package's composer.json file,你會看到它的建立有以下自動加載磁帶機部分

    "autoload": { 
        "psr-0": { 
         "TermExtractor": "", 
         "Tagger": "", 
         "PermissiveFilter": "", 
         "DefaultFilter": "" 
        } 
    } 
    

    沒有進入的全部細節(這是太長,StackOverflow的答案的 - 見我Laravel, Composer, and the State of Autoloading)這psr-0部分意味着PHP應該嘗試自動載入「TermExtractor」類從

    vendor/fivefilters/term-extractor/TermExtractor.php 
    

    Laravel 5是設置自動使用Compoer的自動加載磁帶機庫。這意味着,如果你從一個Laravel自舉環境中編寫代碼,您應該需要做的是

    $object = new TermExtractor(); 
    var_dump(get_class($object)); 
    

    如果不工作就意味着

    1. fivefilters/term-extractor維護者有在他們的自動加載邏輯錯誤

    2. 作曲家不會自動運行composer dumpautoload

    3. 你不運行

      $ composer dumpautoload 
      

      ,看是否可以幫助運行從Laravel自舉enviornment代碼(app/routes.php,控制器文件等)

    我會開始。如果它沒有發佈錯誤,或者發生了什麼意外的行爲,以及您在編寫此代碼的位置(回到您的主要問題中),這將幫助人們幫助您診斷系統出了什麼問題。

    更新:基於更新的問題,以下錯誤

    哎呦,看起來像出事了。 1/1 FatalErrorException在NewsletterController.php線81:類>「Fivefilters \ TermExtractor」未找到

    使得它聽起來像你試圖從住在Fivefilters命名空間的文件運行代碼。即

    namespace Fivefilters 
    //... other code 
    $extractor = new TermExtractor(); 
    

    這並不完全意義 - 基於文件的代碼是從

    app/Http/Controllers/NewsletterController.php 
    

    運行,我期望的命名空間爲App\Http\Controllers。無論如何,它看起來像five filters classes都住在全局命名空間中。這意味着如果你想從一個命名空間的PHP文件中使用它們,你需要引薦給他們明確地爲全局類(主要\

    $object = new \TermExtractor; 
    

    或者使用use聲明你的文件的頂部

    namespace Some/Non/Global/Namespace 
    //... 
    use TermExtractor; 
    //... 
    $extractor = new TermExtractor(); 
    
    +0

    非常感謝艾倫! $ object = new \ TermExtractor;做了這份工作! – carl 2015-02-28 08:30:17