我在文档中没有找到关于此的信息,但它似乎合乎逻辑存在。如何为返回object
类型的值进行类型提示? (我说的是任何对象,而不是某个对象,例如\DateTime
等。)
function getParticipant(): ?object
{
//...
$x = new Cat();
return $x;
}
它不起作用,真正不公平的是print getType($x)
会导致object
。我们有object
类型,但严格说我们会返回object
?
您可能会说这实际上没有必要,我可以写: Cat
,但是当我覆盖PHPDoc中有* @return object|null */
的方法时,这不是我需要的。
答案 0 :(得分:4)
通用object
的类型提示在PHP中尚不存在,但应该从版本7.2.0开始提供,因为RFC Object typehint通过了32票到3 2017年5月31日。
尽管通常(在可能的情况下)最好对特定的类或接口进行类型提示。
答案 1 :(得分:1)
:object
无法解析具有此类型的变量。实际上,PHP将查找名为object
的类,并期望返回此类的实例。
使用您的示例,您应该指示该函数将返回Cat
的实例,因此它应如下所示:
function getParticipant(): Cat
{
return new Cat();
}
我会说PHPDoc表示会返回object
,这很好。 IDE应该解决它,对于PHP解释器它并不重要。
如果你是覆盖方法,你只需在PHPDoc中覆盖@return
语句。
答案 2 :(得分:1)
我无法找到确切的解释,但目前您可以返回类,标量值,自PHP 7.1起,您有void
作为返回值。但在你的情况下"对象"因为返回值不存在。
在我看来,检查你返回的对象更清楚你返回正确的对象更有意义。所以在你的情况下:
function getParticipant(): Cat
{
//...
$x = new Cat();
return $x;
}
然后你可以确定你的函数返回你期望的对象。