laravel 9 中 很多返回值 类型定义为 TValue 导致编辑器中各种报错怎么解决

laravel 9 中 很多返回值 类型定义为 TValue
这个 TValue 是个什么鬼?
这将导致很多之前的写法在编辑器中报错,虽然并不影响代码实际执行
请教各位大神怎么优雅的处理一下这个问题

$data = collect(["a" => 4, "b" => 5]);
$size = $data->get("a") * 1024; // 这种情况就会报错(编辑器报红,实际执行不影响)
// 需要改写成下面的写法才不会报语法错误
$size = (float) $data->get("a") * 1024;

laravel 9 中 很多返回值 类型定义为 TValue  导致编辑器中各种报错怎么解决

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

改用 PHP Storm 或者尝试添加注释。

/** @var iterable<string, int> $data */
$data = ["a" => 1, "b" => 2];
$data = collect($data);

// TODO

这里的 TValue 可以看作是 PHP 中的 “泛型”,当然,目前 PHP 本身是没有实现泛型的,而是给开发工具和静态分析工具所使用的,围绕注释来实现的泛型,对代码运行不受影响。

下图中的 @template 就是声明一个泛型类型。

file

现在 PHP STORM 是完整支持的,PHP STORM 还支持更多更智能的类型推导。

5天前 评论
daixinguo (楼主) 4天前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!