【Laravel】routesのweb.phpでRouteが未定義になるのはVSCodeの拡張機能が原因だった
使用環境
- windows 10 Home(COREi7)
- XAMPP 7.3.18
- Laravel 6
- VSCode
背景
Laravelの学習に取り組んでいるとルーティングを行うroutesフォルダのweb.phpでRouteが未定義だとエラーが発生していた。
原因
VSCodeの拡張機能PHP intelephenseを使用しているとこのエラーが発生する模様。
解決方法
調べてみると2パターンある模様。1つはVSCodeの拡張機能を使う方法。2つ目は定義づけする方法。
1つ目 VSCodeの拡張機能を使う
拡張機能のintelephenseを使用し、intelephenseの設定から以下のチェックを外す。その後、VSCodeを再起動する。
詳しくは下記webサイトを参照。
intelephense.diagnostics.undefinedClassConstants
intelephense.diagnostics.undefinedConstants
intelephense.diagnostics.undefinedFunctions
intelephense.diagnostics.undefinedMethods
intelephense.diagnostics.undefinedProperties
intelephense.diagnostics.undefinedTypes
[VSCode] LaravelでRouteなどがエラーになるのを直す
VSCode拡張機能Intelephenseの更新によるUndefined type 'Route'(他クラス)のエラー
2つ目 web.phpファイル内で定義付けする
web.phpファイル内にuse Illuminate\Support\Facades\Route;
の1文を追加する。
ちなみに関連付けされたRoute.phpは次の場所にある。
作成したLaravelプロジェクトフォルダ\vendor\laravel\framework\src\Illuminate\Support\Facades
注意事項
Routeの使用自体はuse Illuminate\Support\Facades\Route;
をわざわざ記述しなくても使用できるようになっている。
web.phpでuse Illuminate\Support\Facades\Routeをしなくてよい理由
App\Http\Controllers名前空間をコントローラルート登録時に毎回指定しなくても済むように、デフォルトでRouteServiceProviderが名前空間グループの中でroutes.phpファイルを読み込み、指定していることを覚えておいてください。これにより、先頭のApp\Http\Controllers名前空間を省略でき、続きの部分を指定するだけで済みます。
[公式]ルーティング 6.xLaravel