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();
それは機能しません。
ありがとう!
-
私はアランストームによって与えられたアドバイスに従いました-どうもありがとう!
Composerdumpautoloadを実行しています
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
それが役立つかどうかを確認します。エラーが投稿されない場合、または予期しない動作が発生した場合、およびこのコードを記述している場所(メインの質問に戻る)は、ここにいる人々がシステムの問題を診断するのに役立ちます。
更新:更新された質問に基づいて、次のエラー
おっと、何かがうまくいかなかったようです。1 / 1NewsletterController.php行81のFatalErrorException:クラス> 'Fivefilters \ TermExtractor'が見つかりません
Fivefilters
名前空間にあるファイルからコードを実行しようとしているように聞こえます。すなわち。
namespace Fivefilters
//... other code
$extractor = new TermExtractor();
それはまったく意味がありません-コードが実行されているファイルに基づいて
app/Http/Controllers/NewsletterController.php
名前空間はであると思いますApp\Http\Controllers
。それにもかかわらず、5つのフィルタークラスはすべてグローバル名前空間に存在するように見えます。つまり、名前空間付きのPHPファイルからそれらを使用する場合は、グローバルクラス(先頭\
)として明示的にそれらを参照する必要があります。
$object = new \TermExtractor;
またはuse
、ファイルの先頭にあるステートメントを使用します
namespace Some/Non/Global/Namespace
//...
use TermExtractor;
//...
$extractor = new TermExtractor();
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加