結局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.php
のproviders
に下記のように追記します。開発環境のみで有効にするため、config/app.php
のproviders
をオーバーライドします。config/app.php
のproviders
に記述されていたものもすべて含める必要があります。
'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.php
のdefault
でs3
を指定しているのが原因でした。一旦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.json
のscript
にイベントフックを記述すれば、composer update
やgit commit
などのタイミングで自動的に更新をかけることができるようですが、それはまだ試してません。