2015-02-24 92 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