php 8.3 不支持如 `task[]` 这样的原生语法进行类对象数组的类型声明;该写法会触发解析错误,目前仅能在 phpdoc 中使用 `@var task[]` 等注解形式实现 ide 支持与静态分析。
在 PHP 8.3 中,虽然标量、类名、联合类型(Union Types)和交集类型(Intersection Types)均已支持原生类型声明,但泛型数组语法(如 Task[])仍未被语言层面接纳。你尝试编写的如下代码:
private Task[] $tasks; // ❌ Parse error: syntax error, unexpected '['
会直接导致 PHP 解析器报错:syntax error, unexpected token “[” —— 因为 [] 后缀语法仅限于 PHPDoc 注释中用于静态分析工具(如 PHPStan、Psalm)和 IDE(如 PhpStorm)识别,并非有效的运行时类型声明。
✅ 正确且兼容的替代方案如下:
1. 使用 array + PHPDoc 补充语义(推荐,兼顾兼容性与可读性)
/** * @var Task[] */ private array $tasks;
此写法:
立即学习“PHP免费学习笔记(深入)”;