なぜこの記事を書いたのか
LaravelのFacadeを使うときにメソッドの補完ができなくて本当につらかったから。
この記事を読むと何ができる?
- 自作のFacadeがエイリアスを使うが補完できるようになる。
- barryvdh/laravel-ide-helperを使う。
- 本記事はPHP Stormの利用を前提としているが、laravel-ide-helper自体は他のエディタでも使える。
laravel-ide-helperで、できたこと
注意:すべての機能を解説しているわけではありません。試したことだけ書いています。
- config/app.phpにエイリアスをした時に限り、自作Facadeが補完できる。
- もちろんLacavelデフォルトのFacadeは補完できる。
- エイリアスを書かずに補完はできない(っぽい)
-
\path\to\MyClassFacade::myMethod
みたいなのはできなかった(エイリアスを強制される?)
-
- providerに自作Providerを登録しておけば、
\App::make(\path\to\MyClass::class)->superMethod()
のようなメソッド名が補完できる。- この場合
\path\to\MyClass
の補完はできないので手動で頑張る。
- この場合
自作Facadeを作って補完する手順
事前準備
公式ページの手順に従いcomposerでlaravel-ide-helperをインストールする。
Facadeを作成してアプリケーションに登録する
公式ページのFacadeの作り方にのっとって作る。この項目はなぜか最新のドキュメントからは削除されている。
- 自作のFacadeを適当なディレクトリに作る。
- 自作のFacadeをconfig/app.phpのaliasに登録する(仮にこの名前を
MyClass
とする)。 - 自作のProviderを適当なディレクトリにつくる。(公式ページのように
artisan
コマンドを使うとapp/Providers
に作られる) - 自作のProviderをconfig/app.phpのproviderに登録する。
補完を試す
-
php artisan ide-helper:generate
php artisan ide-helper:meta
を実行 -
\MyClass::superMethod
が補完できるようになっていれば成功。-
\My
あたりまで書けばどんどん補完していける。
-