我想在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)的忠告-非常感谢!
运行作曲家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()
我们在第81行找到的位置
$extractor = new TermExtractor();
有什么建议怎么回事?非常感谢!
你所做的是
配置composer.json
文件以使用fivefilters/term-extractor
软件包
使用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));
如果这不起作用,则意味着
的维护者的fivefilters/term-extractor
自动加载器逻辑有误
Composer不会自动composer dumpautoload
为您运行
您不是从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] 删除。
我来说两句