在 Laravel 5 中使用 TermExtractor
Use TermExtractor in Laravel 5
我想在 Laravel 5 中使用一个名为 term-extractor (https://packagist.org/packages/fivefilters/term-extractor) 的库。我尝试通过
通过 composer 安装它
composer require "fivefilters/term-extractor:*"
我认为,这一步是成功的,因为我找到了以下目录:vendor/fivefilters/term-extractor。还添加了一行 composer.json:
"require": {
"laravel/framework": "5.0.*",
"fivefilters/term-extractor": "*"
},
但从这一点上我不知道如何进行。
我的应用真的可以使用这个包吗?
我如何使用术语提取器?如果我尝试
$extractor = new TermExtractor();
没用。
谢谢!
--
我听从了 Alan Storm 的建议 - 非常感谢!
运行 composer 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 世界中发挥良好作用的程度。
如果您搜索 the package on packagist, you'll find the source repository for the package is at BitBucket。
如果您查看 the package's composer.json
file,您会看到它设置了以下自动加载器部分
"autoload": {
"psr-0": {
"TermExtractor": "",
"Tagger": "",
"PermissiveFilter": "",
"DefaultFilter": ""
}
}
无需深入了解全部细节(这对 Whosebug 来说太长了——参见我的 Laravel, Composer, and the State of Autoloading),这个 psr-0
部分意味着 PHP 应该尝试自动加载"TermExtractor" class 来自
vendor/fivefilters/term-extractor/TermExtractor.php
Laravel 5 设置为自动使用 Compoer 的自动加载程序库。这意味着,如果您在 Laravel 引导环境中编写代码,您需要做的就是
$object = new TermExtractor();
var_dump(get_class($object));
如果这不起作用,则意味着
fivefilters/term-extractor
的维护者在他们的自动加载器逻辑中有一个错误
Composer 不会自动 运行ning composer dumpautoload
为您
您不是 运行从 Laravel 自举环境(app/routes.php
、控制器文件等)
我将从 运行ning
开始
$ composer dumpautoload
看看是否有帮助。如果它没有发布错误,或者发生了什么意外行为,以及你在哪里写这段代码(回到你的主要问题)将帮助这里的人帮助你诊断你的系统有什么问题。
更新:根据更新的问题,出现如下错误
Whoops, looks like something went wrong.
1/1 FatalErrorException in NewsletterController.php line 81: Class > 'Fivefilters\TermExtractor' not found
听起来好像您正试图从位于 Fivefilters
命名空间中的文件中 运行 您的代码。即
namespace Fivefilters
//... other code
$extractor = new TermExtractor();
这不太合理 -- 根据代码 运行ning 来自
的文件
app/Http/Controllers/NewsletterController.php
我希望命名空间是 App\Http\Controllers
。不管怎样,看起来 five filters classes 都存在于全局命名空间中。这意味着如果你想从命名空间 PHP 文件中使用它们,你需要将它们的引荐来源明确地作为全局 classes(前导 \
)
$object = new \TermExtractor;
或者使用文件顶部的 use
语句
namespace Some/Non/Global/Namespace
//...
use TermExtractor;
//...
$extractor = new TermExtractor();
我想在 Laravel 5 中使用一个名为 term-extractor (https://packagist.org/packages/fivefilters/term-extractor) 的库。我尝试通过
通过 composer 安装它composer require "fivefilters/term-extractor:*"
我认为,这一步是成功的,因为我找到了以下目录:vendor/fivefilters/term-extractor。还添加了一行 composer.json:
"require": {
"laravel/framework": "5.0.*",
"fivefilters/term-extractor": "*"
},
但从这一点上我不知道如何进行。
我的应用真的可以使用这个包吗? 我如何使用术语提取器?如果我尝试
$extractor = new TermExtractor();
没用。
谢谢!
--
我听从了 Alan Storm 的建议 - 非常感谢!
运行 composer 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 世界中发挥良好作用的程度。
如果您搜索 the package on packagist, you'll find the source repository for the package is at BitBucket。
如果您查看 the package's composer.json
file,您会看到它设置了以下自动加载器部分
"autoload": {
"psr-0": {
"TermExtractor": "",
"Tagger": "",
"PermissiveFilter": "",
"DefaultFilter": ""
}
}
无需深入了解全部细节(这对 Whosebug 来说太长了——参见我的 Laravel, Composer, and the State of Autoloading),这个 psr-0
部分意味着 PHP 应该尝试自动加载"TermExtractor" class 来自
vendor/fivefilters/term-extractor/TermExtractor.php
Laravel 5 设置为自动使用 Compoer 的自动加载程序库。这意味着,如果您在 Laravel 引导环境中编写代码,您需要做的就是
$object = new TermExtractor();
var_dump(get_class($object));
如果这不起作用,则意味着
fivefilters/term-extractor
的维护者在他们的自动加载器逻辑中有一个错误Composer 不会自动 运行ning
composer dumpautoload
为您您不是 运行从 Laravel 自举环境(
app/routes.php
、控制器文件等)
我将从 运行ning
开始$ composer dumpautoload
看看是否有帮助。如果它没有发布错误,或者发生了什么意外行为,以及你在哪里写这段代码(回到你的主要问题)将帮助这里的人帮助你诊断你的系统有什么问题。
更新:根据更新的问题,出现如下错误
Whoops, looks like something went wrong. 1/1 FatalErrorException in NewsletterController.php line 81: Class > 'Fivefilters\TermExtractor' not found
听起来好像您正试图从位于 Fivefilters
命名空间中的文件中 运行 您的代码。即
namespace Fivefilters
//... other code
$extractor = new TermExtractor();
这不太合理 -- 根据代码 运行ning 来自
的文件app/Http/Controllers/NewsletterController.php
我希望命名空间是 App\Http\Controllers
。不管怎样,看起来 five filters classes 都存在于全局命名空间中。这意味着如果你想从命名空间 PHP 文件中使用它们,你需要将它们的引荐来源明确地作为全局 classes(前导 \
)
$object = new \TermExtractor;
或者使用文件顶部的 use
语句
namespace Some/Non/Global/Namespace
//...
use TermExtractor;
//...
$extractor = new TermExtractor();