在Laravel 5中使用TermExtractor



我想使用一个名为术语提取器的库(https://packagist.org/packages/fivefilters/term-extractor)在Laravel 5中。我试着用通过composer安装它

composer require "fivefilters/term-extractor:*" 

我认为,这一步是成功的,因为我找到了以下目录:vendor/fivefilters/term-textractor。还有一行被添加到composer.json:

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

但从这一点上来说,我不知道该怎么办。

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

$extractor = new TermExtractor();

它不起作用。

谢谢!

--

我听从了艾伦·斯托姆的建议——非常感谢!

  1. 运行composer dumpautoload

    composer dumpautoload
    Generating autoload files
    

看起来很好。

  1. 运行我的代码

    Whoops, looks like something went wrong.
    1/1 FatalErrorException in NewsletterController.php line 81: Class 'FivefiltersTermExtractor' not found
    in NewsletterController.php line 81
    at HandleExceptions->fatalExceptionFromError(array('type' => '1', 'message' => 'Class 'FivefiltersTermExtractor' 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();

有什么建议吗?非常感谢!

您所做的是

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

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

下一步要做什么取决于包开发人员如何设置他们的包,以便在现代PHP世界中发挥出色的作用。

如果你在packagegist上搜索包,你会发现包的源存储库在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被设置为自动使用Composer的自动加载器库。这意味着,如果您在Laravel自举环境中编写代码,那么您所需要做的就是

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

如果这不起作用,那就意味着

  1. fivefilters/term-extractor的维护人员在其自动加载器逻辑中出现错误

  2. Composer不会自动为您运行composer dumpautoload

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

我会从运行开始

$ composer dumpautoload

看看这是否有帮助。如果它没有发布错误,或者发生了什么意外行为,以及你在哪里写这段代码(回到你的主要问题中),将帮助这里的人帮助你诊断系统的问题。

更新:根据更新的问题,以下错误

哎呀,好像出了什么问题。Newsle时事通讯Controller.php中的1/1致命错误异常第81行:未找到Class>'Fivefilters\TermExtractor'

听起来像是在尝试从位于Fivefilters命名空间中的文件运行代码。即

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

这不太有意义——基于代码从运行的文件

app/Http/Controllers/NewsletterController.php

我希望名称空间是AppHttpControllers。不管怎样,看起来这五个过滤器类都存在于全局命名空间中。这意味着,如果你想从有名称空间的PHP文件中使用它们,你需要将它们明确地作为全局类(领先的)引用

$object = new TermExtractor;

或者使用文件顶部的use语句

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

相关内容

  • 没有找到相关文章

最新更新