Laravelのコード補完が効かない問題を「laravel-ide-helper」で解決!

Laravelを使って開発を行っていたところ、コード補完が効かず、Undefined classとなって困りました。
f:id:aym413:20190702125517j:plain

同僚からlaravel-ide-helperを入れるといいよ!と言われたので、早速導入してみました!
github.com

導入手順

composer で laravel-ide-helper をインストールする

composer.jsonbarryvdh/laravel-ide-helperを追加します。

    "require": {
        "php": "^7.1.3",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "5.8.*",
        "laravel/tinker": "^1.0",
        "barryvdh/laravel-ide-helper": "^2.6.2" ★追加 ※2019/07/02時点のバージョンです
    },

composer.json に必要なパッケージを書いてcomposer updateをすると composer.json をもとに各パッケージを追加することができます。

$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
 :
 - Installing barryvdh/laravel-ide-helper (v2.6.2): Downloading (100%)  
 :
Package manifest generated successfully.

サービスプロバイダーに追加する

config/app.phpprovidersIdeHelperServiceProviderを追加します。

'providers' => [
 :
/*
  * Package Service Providers...
*/
Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class, ★追加
 :
]

Laravel 5.5 からは追加不要です!

サービスプロバイダーとは?
Laravelのライフサイクルでは、ビジネスロジックが実行される前にサービスプロバイダーのクラスが呼ばれます。 サービスプロバイダはサービス(機能)ごとに初期処理を行なう目的で用意されています。

ヘルパーファイルを作成する

artisanコマンドでヘルパーファイルを作成します。

$ php artisan ide-helper:generate
A new helper file was written to _ide_helper.php

ヘルパーファイルとは?
どこからでも呼べる汎用的な関数郡をもつファイルのこと。
Laravelでも多くのヘルパー関数が用意されています。 readouble.com


これでクラスが認識され、コード補完もできるようになりました! f:id:aym413:20190702133903p:plain


ひと通りの補完はこれで効くようになったかと思いますが、Modelの補完も効くようにするにはphp artisan ide-helper:modelsをやればOKのようです!
Laravelを使う際には初期設定には入れたいですね!