在我今天得到的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一直显示错误,所以有办法解决这个问题吗?
如果您知道您的问题仅限于Facades,并且您正在运行Laravel 5.5或更高版本,那么这个解决方案可能会对您有所帮助。
安装laravel-ide-helper
编译器需要——dev barryvdh/ laravell -ide-helper
在AppServiceProvider中添加这个条件语句来注册helper类。
public function register()
{
if ($this->app->environment() !== 'production') {
$this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
}
// ...
}
然后运行php artisan IDE -helper:generate生成一个文件来帮助IDE理解Facades。您需要重新启动Visual Studio Code。
参考文献
https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/16
https://github.com/barryvdh/laravel-ide-helper
在我的例子中,由于某种原因,供应商文件夹在VS Code设置中被禁用:
"intelephense.files.exclude": [
"**/.git/**",
"**/.svn/**",
"**/.hg/**",
"**/CVS/**",
"**/.DS_Store/**",
"**/node_modules/**",
"**/bower_components/**",
"**/vendor/**", <-- remove this line!
"**/resources/views/**"
],
通过删除包含供应商文件夹的行,它可以在Intelephense 1.5.4版本上正常工作