php 对象类型的类型提示
php type hinting for object type
我在文档中没有找到关于此的信息,但它的存在似乎是合乎逻辑的。如何为 returning object
类型的值制作类型提示? (我说的是任何对象,而不是某个对象,例如 \DateTime
等)
function getParticipant(): ?object
{
//...
$x = new Cat();
return $x;
}
它不起作用,真正不公平的是 print getType($x)
会导致 object
。所以我们有一个 object
类型,但不能严格地说我们将 return 一个 object
?
你可能会说这真的没有必要,我可以直接写 : Cat
,但是当我覆盖一个在他的 PHPDoc 中有 * @return object|null */
的方法时,这不是我需要的。
:object
不解析具有此类型的变量。事实上,PHP 将查找名为 object
的 class 并期望此 class 的实例将被 returned.
使用您的示例,您应该指出该函数将 return Cat
的一个实例,因此它应该如下所示:
function getParticipant(): Cat
{
return new Cat();
}
我会说 PHPDoc 说 object
将被 returned 很好。 IDE 应该解决它,对于 PHP 解释器来说,这无关紧要。
如果您要覆盖方法,您可以简单地覆盖 PHPDoc.
中的 @return
语句
我找不到确切的解释,但目前你可以 return 类,标量值,因为 PHP 7.1 你有 void
作为 return 值。但在您的情况下 "object" as return 值不存在。
在我看来,检查您 return 哪个对象更有意义,以明确您 return 是正确的对象。所以在你的情况下:
function getParticipant(): Cat
{
//...
$x = new Cat();
return $x;
}
那么你可以确定你的函数return是你期望的对象。
通用 object
的类型提示在 PHP 中尚不存在,但应该从 7.2.0 版开始可用,因为 RFC Object typehint 已通过2017 年 5 月 31 日,32 票对 3 票。
尽管通常(在可能的情况下)最好还是对特定 class 或界面进行类型提示。
我在文档中没有找到关于此的信息,但它的存在似乎是合乎逻辑的。如何为 returning object
类型的值制作类型提示? (我说的是任何对象,而不是某个对象,例如 \DateTime
等)
function getParticipant(): ?object
{
//...
$x = new Cat();
return $x;
}
它不起作用,真正不公平的是 print getType($x)
会导致 object
。所以我们有一个 object
类型,但不能严格地说我们将 return 一个 object
?
你可能会说这真的没有必要,我可以直接写 : Cat
,但是当我覆盖一个在他的 PHPDoc 中有 * @return object|null */
的方法时,这不是我需要的。
:object
不解析具有此类型的变量。事实上,PHP 将查找名为 object
的 class 并期望此 class 的实例将被 returned.
使用您的示例,您应该指出该函数将 return Cat
的一个实例,因此它应该如下所示:
function getParticipant(): Cat
{
return new Cat();
}
我会说 PHPDoc 说 object
将被 returned 很好。 IDE 应该解决它,对于 PHP 解释器来说,这无关紧要。
如果您要覆盖方法,您可以简单地覆盖 PHPDoc.
中的@return
语句
我找不到确切的解释,但目前你可以 return 类,标量值,因为 PHP 7.1 你有 void
作为 return 值。但在您的情况下 "object" as return 值不存在。
在我看来,检查您 return 哪个对象更有意义,以明确您 return 是正确的对象。所以在你的情况下:
function getParticipant(): Cat
{
//...
$x = new Cat();
return $x;
}
那么你可以确定你的函数return是你期望的对象。
通用 object
的类型提示在 PHP 中尚不存在,但应该从 7.2.0 版开始可用,因为 RFC Object typehint 已通过2017 年 5 月 31 日,32 票对 3 票。
尽管通常(在可能的情况下)最好还是对特定 class 或界面进行类型提示。