PhpStorm 错误?错误的返回类型:预期用户,返回 Laravel 存储库中的 Eloquest\Model|object

Posted

技术标签:

【中文标题】PhpStorm 错误?错误的返回类型:预期用户,返回 Laravel 存储库中的 Eloquest\\Model|object【英文标题】:PhpStorm error? Wrong return type: Expected User, returned Eloquest\Model|object at Laravel repositoryPhpStorm 错误?错误的返回类型:预期用户,返回 Laravel 存储库中的 Eloquest\Model|object 【发布时间】:2022-01-02 02:54:08 【问题描述】:

我的意思是……为什么?我正在使用模型定义查询,它实际上是正确返回的,但 phpStorm 没有正确检测到我。

这工作正常,但在 IDE 中出现警告是一件很痛苦的事。

我们希望提高代码质量(使用 Code Sniffer、PHPStan...)并将所有检查都保持在警告级别,但这让我们很不爽。

【问题讨论】:

我不关心是否需要使用PHPDoc来解决它,但最好是修复它而不是保留警告。 尝试删除query(),如果 AdminUser 扩展 Modal 则没有必要 您也可以尝试使用github.com/barryvdh/laravel-ide-helper 为模型生成文档块。这也应该会改善自动完成功能 【参考方案1】:

这是 IDE 自动代码分析的限制之一,因为它仅在运行时返回值将具有您预期的类型。

唯一的方法是添加简短的 PHPDoc,如下所示

/** @var AdminUser $user **/ 
$user = AdminUser::query()-first();
return $user;

它将强制您的 IDE 使用变量类型,并且对运行时没有影响。

【讨论】:

我明白了.... 使用此方法的唯一解决方案是返回 $user->first() 因为如果您不直接使用此 var,IDE 建议直接返回 @DarkPeTruS "...因为如果您不直接使用此 var,IDE 建议直接返回" 以后不应再出现此类警告2022.1 版本(甚至可能是 2021.3 版本,但不太可能) -- youtrack.jetbrains.com/issue/WI-59730 但是我的问题是 AdminUser 中不存在 first() 函数....我看到这没有花哨的解决方案 @LazyOne 谢谢。哇,这至少是一种解脱

以上是关于PhpStorm 错误?错误的返回类型:预期用户,返回 Laravel 存储库中的 Eloquest\Model|object的主要内容,如果未能解决你的问题,请参考以下文章

为啥 PhpStorm 会报“参数类型不匹配”错误?

SQLServer 空间查询返回错误在预期条件的上下文中指定的非布尔类型的表达式,靠近 ')'

mypy 错误:返回值类型不兼容(得到“object”,预期“Dict [Any, Any]”)

PHP 生成器返回类型

Prolog:类型错误:“可评估”预期,找到`[]'(empty_list)

Jetty 在格式错误的 HTTP POST 标头上返回“HTTP/1.1 400 Bad Request”。这是预期的吗?