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 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 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 还支持更多更智能的类型推导。

1年前 评论
daixinguo (楼主) 1年前

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