laravel 9 中 很多返回值 类型定义为 TValue 导致编辑器中各种报错怎么解决
laravel 9 中 很多返回值 类型定义为 TValue
这个 TValue 是个什么鬼?
这将导致很多之前的写法在编辑器中报错,虽然并不影响代码实际执行
请教各位大神怎么优雅的处理一下这个问题
$data = collect(["a" => 4, "b" => 5]);
$size = $data->get("a") * 1024; // 这种情况就会报错(编辑器报红,实际执行不影响)
// 需要改写成下面的写法才不会报语法错误
$size = (float) $data->get("a") * 1024;
本作品采用《CC 协议》,转载必须注明作者和本文链接
改用 PHP Storm 或者尝试添加注释。
这里的
TValue
可以看作是 PHP 中的 “泛型”,当然,目前 PHP 本身是没有实现泛型的,而是给开发工具和静态分析工具所使用的,围绕注释来实现的泛型,对代码运行不受影响。下图中的
@template
就是声明一个泛型类型。现在 PHP STORM 是完整支持的,PHP STORM 还支持更多更智能的类型推导。
PhpStorm 2021.3: PHP 8.1, Generics, Remote Development, Refactorings, and More | The PhpStorm Blog
PhpStorm 2021.2: Generics, Enums, Array Shapes, Inspections, Refactorings, and More | The PhpStorm Blog
Template Annotations - Documentation
Generics in PHP using PHPDocs | PHPStan
Generic Types · phan/phan Wiki