LoginSignup
3
3

More than 5 years have passed since last update.

OctoberCMSでもIDE補完

Last updated at Posted at 2016-09-15

結局Laravelのための補完機能を入れるわけですが、少し異なるところもあるので、OctoberCMSでの開発の一つとして書きます。

OctoberCMSはLaravelベースなので、当然Laravelのファサードを多用します。しかし、ファサードの実態がどのクラスでどんなメソッドを持つかなど、毎回ソースコードやメモを辿って調べるのは面倒です。
なので、EclipseなどのIDEにそこは補完してもらいましょう。

barryvdh/laravel-ide-helper(packagist, github)を使います。

手順

こちら「OctoberCMSの導入」のようにcomposerを使ってOctoberCMSを入れていれば、プロジェクトのルートディレクトリで下記を実行すれば必要な依存パッケージもすべてインストールしてくれます。

$ composer require --dev "barryvdh/laravel-ide-helper"

そして、設定ファイルconfig/dev/app.phpprovidersに下記のように追記します。開発環境のみで有効にするため、config/app.phpprovidersをオーバーライドします。config/app.phpprovidersに記述されていたものもすべて含める必要があります。

config/dev/app.php
'providers' => array_merge(include(base_path('modules/system/providers.php')), [
    // ...
    Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,
]),

ファサードの補完

下記コマンドで一発です。

$ php artisan ide-helper:generate <output_filename>

<output_filename>で指定した名前のファイルが生成され、補完が効くようになります。
<output_filename>を省略した場合、デフォルトの_ide_helper.phpという名前でファイルが生成されます。

エラーになる場合

自分の場合、実行したらこんなエラーに遭遇しました。

[Symfony\Component\Debug\Exception\FatalThrowableError]
Class 'League\Flysystem\AwsS3v3\AwsS3Adapter' not found

これはこちらで説明されていますが、config/filesystems.phpdefaults3を指定しているのが原因でした。一旦localに設定して上記コマンドを実行することでうまくいきました。

モデルクラスの補完

laravel-ide-helperはデフォルトでapp/modelsディレクトリにモデルクラスを探しに行くので、OctoberCMSの場合、プラグイン内のmodelsディレクトリを指定してやらなければなりません。

$ php artisan ide-helper:models --dir="plugins/<auther_name>/<plugin_name>/models" --dir="plugins/<auther_name>/<another_plugin>/models"

--dirでモデルクラスが格納されているディレクトリを指定します。
--dirは複数指定することができます。

これで、_ide_helper_models.phpというファイルが生成され、補完が効くようになります。

その後

パッケージを更新したり、モデルクラスを更新したりしたら、再度これらのコマンドを実行してファイルを更新する必要があります。

composer.jsonscriptにイベントフックを記述すれば、composer updategit commitなどのタイミングで自動的に更新をかけることができるようですが、それはまだ試してません。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3