Adr*_*ama 199 php laravel visual-studio-code
在我今天获得 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');
});
Run Code Online (Sandbox Code Playgroud)
实际上这段代码没有错误,但是智能电话一直显示错误,所以有没有办法解决这个问题?
bme*_*urn 188
Intelephense 1.3 添加了未定义类型、函数、常量、类常量、方法和属性诊断,而之前在 1.2 中只有未定义变量诊断。
某些框架的编写方式为用户提供了方便的快捷方式,但使静态分析引擎难以发现运行时可用的符号。
存根生成器,如https://github.com/barryvdh/laravel-ide-helper帮助填补了这里的空白,将它与 Laravel 一起使用将通过提供易于发现的具体符号定义来处理许多错误诊断。
尽管如此,PHP 是一种非常灵活的语言,根据代码的编写方式,可能还有其他虚假未定义符号的实例。出于这个原因,自 1.3.3 起,intelephense 具有配置选项来启用/禁用每个类别的未定义符号以适应工作区和编码风格。
这些选项是:
intelephense.diagnostics.undefinedTypes
intelephense.diagnostics.undefinedFunctions
intelephense.diagnostics.undefinedConstants
intelephense.diagnostics.undefinedClassConstants
intelephense.diagnostics.undefinedMethods
intelephense.diagnostics.undefinedProperties
intelephense.diagnostics.undefinedVariables
将所有这些设置为 false exceptintelephense.diagnostics.undefinedVariables将提供 1.2 版行为。查看 VSCode 设置 UI 并搜索intelephense.
Rob*_*990 156
版本 1.3.0 有缺陷 IMO。
降级到 1.2.3 版修复了我的问题。
我上线了
小智 34
use Illuminate\Support\Facades\Route;
Run Code Online (Sandbox Code Playgroud)
警告 导入相应的命名空间后消失。
版本的
Hef*_*Hef 25
就我而言,我必须强制Intelephense对工作区建立索引。这是我的做法,在VsCode:
ctrl + shift + p>Intelephense: Index workspace
Nac*_*cho 23
您无需降级即可:
在设置中禁用未定义的符号诊断 - "intelephense.diagnostics.undefinedSymbols": false 。
或者使用 ide 助手为 laravel 外观添加存根。见https://github.com/barryvdh/laravel-ide-helper
Pat*_*rex 17
如果您知道您的问题仅限于 Facades 并且您运行的是 Laravel 5.5 或更高版本,则此解决方案可能会对您有所帮助。
安装 laravel-ide-helper
composer require --dev barryvdh/laravel-ide-helper
在您AppServiceProvider的注册助手类中添加此条件语句。
public function register()
{
if ($this->app->environment() !== 'production') {
$this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
然后运行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
Que*_*ium 17
从1.7.1版本开始还有其他解决方案(2021-05-02)
您现在可以知道 intelephense 应该在哪里寻找依赖项,例如最常见的供应商。
"intelephense.environment.includePaths": [
"vendor"
],
Run Code Online (Sandbox Code Playgroud)
此外,它甚至绕过了 VSCode 规则
"files.exclude": {
"**/vendor": true
},
Run Code Online (Sandbox Code Playgroud)
Sou*_*ker 15
1.3.1 修复它。
只需更新您的扩展程序,您就可以开始使用了
rog*_*ila 11
就我而言,出于某种原因,vendorVS Code 设置中禁用了文件夹:
"intelephense.files.exclude": [
"**/.git/**",
"**/.svn/**",
"**/.hg/**",
"**/CVS/**",
"**/.DS_Store/**",
"**/node_modules/**",
"**/bower_components/**",
"**/vendor/**", <-- remove this line!
"**/resources/views/**"
],
Run Code Online (Sandbox Code Playgroud)
通过删除包含vendor文件夹的行,它可以在 Intelephense 1.5.4 版上正常工作
如果您在添加新的 Vendor 类后立即看到此信息,请务必运行 VScode 命令 (control-shift-P) Index Workspace
这是我解决的:
打开扩展设置:
并搜索您要更改的变量,并取消选中/选中它
您应该考虑的变量是:
intelephense.diagnostics.undefinedTypes
intelephense.diagnostics.undefinedFunctions
intelephense.diagnostics.undefinedConstants
intelephense.diagnostics.undefinedClassConstants
intelephense.diagnostics.undefinedMethods
intelephense.diagnostics.undefinedProperties
intelephense.diagnostics.undefinedVariables
Run Code Online (Sandbox Code Playgroud)
对于那些宁愿保持简单、愚蠢的人;如果您宁愿摆脱通知而不是安装帮助程序或降级,只需settings.json通过添加以下内容来禁用您的错误:
"intelephense.diagnostics.undefinedTypes": false
Run Code Online (Sandbox Code Playgroud)
小智 5
不,只有在 Intelephense 扩展自动更新后才会出现错误。
要解决此问题,您可以通过单击 Intelephense 扩展中的“安装另一个版本”将其降级到以前的版本。版本 1.2.3 上没有错误。
我希望这对任何人都有帮助。我经常使用它。这将使您的 vscode “重新启动”,而无需实际重新启动。此过程的一部分将使您的插件更新其缓存索引。cmd+shift+p或者ctrl+shift+p
| 归档时间: |
|
| 查看次数: |
158825 次 |
| 最近记录: |