在我今天得到的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');
});

实际上,这段代码中没有错误,但intelephense一直显示错误,所以有办法解决这个问题吗?


当前回答

如果您在添加一个新的Vendor类后立即看到这种情况,请务必运行VScode命令(control-shift-P)索引工作区

其他回答

下面是我解决的问题:

打开扩展设置:

然后搜索你想要更改的变量,然后取消选中它

你应该考虑的变量有:

intelephense.diagnostics.undefinedTypes 
intelephense.diagnostics.undefinedFunctions         
intelephense.diagnostics.undefinedConstants         
intelephense.diagnostics.undefinedClassConstants 
intelephense.diagnostics.undefinedMethods 
intelephense.diagnostics.undefinedProperties 
intelephense.diagnostics.undefinedVariables
 use Illuminate\Support\Facades\Route;

添加上述命名空间

我最近解决了自己的问题。通过文件>首选项 我在寻找智慧 有文件的部分被排除了,我注意到供应商文件夹被添加了。 我把它删除了,现在我所有的laravel文件都有索引了

我找到的唯一可行的解决方案是:

设置语言模式为Blade(使用扩展:Laravel Blade格式化器) 这将解决问题。否则,请按照此步骤操作。

这些类不存在于工作区中。Laravel在运行时创建它们。因此,它们被报告为未定义的。解决方案是提供存根定义

https://github.com/barryvdh/laravel-ide-helper

或关闭诊断(intelephense.diagnostics.undefinedTypes)。

不,只有在自动更新Intelephense扩展后才会出现错误。

要解决这个问题,您可以通过单击Intelephense扩展中的“安装另一个版本”将其降级到以前的版本。版本1.2.3上没有错误。