今日入手した PHP Intelephense の最新アップデート後、Intelephense はルート (および他のクラス) の未定義シンボルのエラーを表示し続けます。以前はこのようなエラーは発生しておらず、困っています。
エラーのスクリーンショットは次のとおりです:
これが私のコードです:
Route::group(['prefix' => 'user', 'namespace' => 'Membership', 'name' => 'user.'], function () {
Route::get('profile', 'ProfileController@show')->name('profile.show');
Route::patch('profile', 'ProfileController@update')->name('profile.update');
Route::patch('change-password', 'ChangePasswordController@change')->name('change-password');
Route::get('role', 'ProfileController@getRole')->name('profile.role');
Route::get('summary', 'SummaryController@show')->name('summary');
Route::get('reserved', 'AuctionController@reservedAuction')->name('reserved');
});
実際、このコードにはエラーはありませんが、Intelliphense ではエラーが表示され続けるので、これを修正する方法はありますか?
ベストアンサー1
Intelephense 1.3 では、未定義の型、関数、定数、クラス定数、メソッド、およびプロパティの診断が追加されました。以前の 1.2 では、未定義の変数の診断のみがありました。
一部のフレームワークは、ユーザーにとって便利なショートカットを提供する方法で書かれていますが、静的分析エンジンが実行時に使用可能なシンボルを検出することが困難になっています。
https://github.com/barryvdh/laravel-ide-helperのようなスタブ ジェネレーターは、このギャップを埋めるのに役立ちます。これを Laravel で使用すると、簡単に検出できるシンボルの具体的な定義が提供され、多くの誤った診断に対処できます。
それでも、PHP は非常に柔軟な言語であり、コードの書き方によっては、誤った未定義シンボルのインスタンスが他にも存在する可能性があります。このため、1.3.3 以降、intelephense には、ワークスペースとコーディング スタイルに合わせて未定義シンボルの各カテゴリを有効/無効にする設定オプションがあります。
これらのオプションは次のとおりです。
"intelephense.diagnostics.undefinedTypes": false,
"intelephense.diagnostics.undefinedFunctions": false,
"intelephense.diagnostics.undefinedConstants": false,
"intelephense.diagnostics.undefinedClassConstants": false,
"intelephense.diagnostics.undefinedMethods": false,
"intelephense.diagnostics.undefinedProperties": false,
"intelephense.diagnostics.undefinedVariables": true,
これらすべてを false に設定すると、intelephense.diagnostics.undefinedVariables
バージョン 1.2 の動作が行われます。VSCode 設定 UI を参照して、を検索してくださいintelephense
。