在我今天得到的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一直显示错误,所以有办法解决这个问题吗?


当前回答

在我的例子中,由于某种原因,供应商文件夹在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版本上正常工作

其他回答

use Illuminate\Support\Facades\Route;

警告导入相应的命名空间后消失。

版本的

幼虫 6+ VSCODE 版本 1.40.2 PHP Intelephense 1.3.1

在你的web。php中

添加这行代码

use Illuminate\Support\Facades\Route;

然后你就完成了,如果你得到了认证错误,然后添加这行代码

use Illuminate\Support\Facades\Auth;

谢谢。

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

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

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

对于遇到这些问题并对禁用一整套检查感到不安的人来说,有一种方法可以将您自己的自定义签名传递给Intelephense。

摘自Intelephese repo的评论(来自@KapitanOczywisty): https://github.com/bmewburn/vscode-intelephense/issues/892#issuecomment-565852100

For single workspace it is very simple, you have to create .php file with all signatures and intelephense will index them. If you want add stubs globally, you still can, but I'm not sure if it's intended feature. Even if intelephense.stubs throws warning about incorrect value you can in fact put there any folder name. { "intelephense.stubs": [ // ... "/path/to/your/stub" ] } Note: stubs are refreshed with this setting change. You can take a look at build-in stubs here: https://github.com/JetBrains/phpstorm-stubs

在我的情况下,我需要dspec的描述,beforeEach,它…不被突出显示为错误,所以我只是包括签名/ directores_and_paths /app/vendor/bin/dspec文件在我的VSCode的工作空间设置,其中有我需要的函数声明:

function describe($description = null, \Closure $closure = null) {
}

function it($description, \Closure $closure) {
}

// ... and so on