最近、Laravelプロジェクトが作成、公開している兄弟フレームワーク、”Lumen”を触り始めています。
LumenはLaravelをベースに開発された”軽量フレームワーク”であり、Laravelは”全部盛り”なのに対し、Lumenは、”必要な機能だけ有効化して使う”設計になっています。
故に、make系をはじめとするArtisanコマンドや、Eloquent、Facades、Sessionなどがデフォルトで無効化されています。(Eloquent、Facades、Sessionは必要に応じて有効化できます。)
不要なコンポーネントが放置されづらいので、動作が軽くなるわけですね。
さて、このLumenを触るにあたって、手始めにide-helperを動かそうとしたらおもいっきり躓いたので、その解決方法と合わせてご紹介したいと思います。
ide-helperは、フレームワークのソース構造をIDEに正しく認識させるために必要になるヘルパーファイルです。
必須というわけではありませんが、IDEのintellisenseや宣言元へのジャンプ機能などを積極的に使いたい場合は必要になってきます。
このide-helperは、composerで追加できるartisanコマンド”ide-helper:generate”で生成することができます。
composer require barryvdh/laravel-ide-helper #ide-helperをcomposerからインストール
// bootstrap/app.php:95 以降のサービスプロバイダ呼び出しのブロックを下記のように変更(※LumenはProvidersの記述場所がLaravelと異なるので注意。)
$app->register(App\Providers\AppServiceProvider::class); //有効化
$app->register(App\Providers\AuthServiceProvider::class); //有効化
// $app->register(App\Providers\EventServiceProvider::class);
$app->register(Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class); //追記
php ./artisan ide-helper:generate #通常はこれでide-helperが生成される。
ところが実際は…
$ php ./artisan ide-helper:generate
In FilesystemManager.php line 164:
Class 'League\Flysystem\Adapter\Local' not found
とエラーになってしまいます。
Phpstorm installs ide-helper based on lumen – Develop PAPER
こちらのサイトによると、composerからleague/flysystemを入れれば解決するとのこと。(Laravelでは始めから入ってくるが、Lumenでは自分で入れないといけないようです。)
composer require league/flysystem
よっしゃこれで生成できる!!!
と思ったのもつかの間…
$ php ./artisan ide-helper:generate
In FilesystemManager.php line 164:
Class 'League\Flysystem\Adapter\Local' not found
できないじゃん….
このあと、解決方法がわからず色々触りまくったところ、下記の方法で解決しました。
league/flysystem をインストールする際に、少し古いバージョンを指定する方法です。
composer require league/flysystem:1.*
これでleague/flysystemを1系にダウングレードして、再度ide-helper:generateを実行したところ、
$ php ./artisan ide-helper:generate
A new helper file was written to _ide_helper.php
無事生成できました!!!
どうやら、league/flysystem の2系はいろいろ変わっているらしく、Lumenからうまく呼び出せない状態になっているようです。
ということで、ide-helperをLumenで使う際はお気を付けください。