在用 PHP8.1 编写的代码中,我在方法调用中使用命名参数:
// function definition
public function myFunction(string $name, string $description = "")
// method call with errors
->myFunction(name: self::SOME_CONSTANT)
但是扩展 PHP Intelephene 显示 2 个错误:
Undefined constant 'App\Some\Namespace\name'.intelephense(1011)
和Unexpected ':'.intelephense(1001)
我已经尝试过(没有成功):
- 全系统安装 PHP8.1 并将其设置为默认版本(cli 版本 PHP 8.1.2)
- 为用户和工作区设置这些
-
"intelephense.environment.phpVersion": "8.1.2",
-
"php.validate.executablePath": "/usr/bin/php8.1",
- 重启(完全关闭 vscode 并再次重新打开工作区文件夹)
编辑/回答 - 将您的 VSCODE 更新为最新!
如果您不确定在哪里可以找到 - 请查看帮助 > 关于,然后查看 vscode 更新网站。最后的问题实际上是一个过时的 Visual Studio Code 问题,导致扩展无法正确更新。这怎么发生的?我不小心使用了没有自我更新的 vscode,apt install code
它可以与 snap 版本一起安装 - 对于 ubuntu,解决方案是删除 apt 代码并只保留 snap 版本或安装它sudo snap install --classic code
- 感谢https: //askubuntu.com/a/1217734/277898让我实现 x)