在Laravel 5中使用TermExtractor

卡尔

我想在Laravel 5中使用一个名为term-extractor(https://packagist.org/packages/fivefilters/term-extractor)的库。

composer require "fivefilters/term-extractor:*" 

我认为,此步骤非常成功,因为我找到了以下目录:vendor / fivefilters / term-extractor。以及在composer.json中添加了一行:

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

但是从这一点上我不知道该如何进行。

该软件包真的可以用于我的应用程序吗?如何使用术语提取器?如果我尝试

$extractor = new TermExtractor();

它不起作用。

谢谢!

--

我追随了艾伦·斯托姆(Alan Storm)的忠告-非常感谢!

  1. 运行作曲家dumpautoload

    composer dumpautoload
    Generating autoload files
    

似乎很好。

  1. 运行我的代码

    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()
    

我们在第81行找到的位置

$extractor = new TermExtractor();

有什么建议怎么回事?非常感谢!

艾伦·斯托姆(Alan Storm)

你所做的是

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

  2. 使用Composer将fivefilters/term-extractor软件包下载到您的vendor文件夹中

接下来的操作取决于程序包开发人员将其程序包设置为在现代PHP世界中运行良好的程度。

如果您在packagist上搜索软件包,则会在BitBucket上找到该软件包的源存储库

如果您查看软件包的composer.json文件,则会在下面的自动加载器部分中看到它的设置

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

无需详细说明(对于StackOverflow来说,答案太长了-请参阅我的Laravel,Composer和自动加载状态),这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不会自动composer dumpautoload为您运行

  3. 您不是从Laravel引导环境(app/routes.php,控制器文件等)运行代码

我先跑步

$ composer dumpautoload

看看是否有帮助。如果它没有发布错误,或者发生了什么意外行为,以及您编写此代码的位置(返回您的主要问题),将帮助这里的人们帮助您诊断系统出了什么问题。

更新:基于更新后的问题,出现以下错误

哎呦,看起来像出事了。NewsletterController.php第81行中的1/1 FatalErrorException:未找到类>'Fivefilters \ TermExtractor'

听起来好像您正在尝试从位于Fivefilters命名空间中的文件中运行代码IE

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

这不太有意义-根据代码从中运行文件

app/Http/Controllers/NewsletterController.php

我希望命名空间是App\Http\Controllers无论如何,看起来这五个过滤器类都位于全局名称空间中。这意味着,如果您想从命名空间的PHP文件中使用它们,则需要将它们作为全局类显式引用(引号\)。

$object = new \TermExtractor;

或使用use文件顶部语句

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章