【发布时间】:2022-06-14 00:32:22
【问题描述】:
我正在使用 Visual Studio Code 编写 PHP8 代码。我想试试严格类型declare(strict_types=1)。
当使用单一类型时,一切都很好:
function doSomething(int $value): ?float
{
if ($value === null) return null;
return round($value, 3);
}
使用联合类型时,编译器会抛出错误:
function doSomething(int|string $value): ?float
{
if ($value === null) return null;
return round($value, 3);
}
错误:
'VariableName' expected
')' expected
'{' expected
Unexpected '|'
';'
...
我禁用了 PHP 语言功能,我正在使用 PHP Intelephense v1.8.0 扩展。
【问题讨论】:
-
$value不能是null,因为$value的类型是int或string(3v4l.org/e2kuH#v8.0.15)。也就是说,错误表明解析器不知道 PHP8 和联合类型 (3v4l.org/v4OJf)。 -
所以目前没有支持/适用于 PHP8 的 PHP VS 代码扩展?
-
另外,您是否已将 PHP Intelephense 配置为使用 PHP/8.1 语法? stackoverflow.com/questions/70621681/…