php类型提示对象类型

时间:2017-06-19 13:30:49

标签: php type-hinting php-7.1

我在文档中没有找到关于此的信息,但它似乎合乎逻辑存在。如何为返回object类型的值进行类型提示? (我说的是任何对象,而不是某个对象,例如\DateTime等。)

function getParticipant(): ?object
{
   //...
  $x = new Cat(); 
  return $x;
}

它不起作用,真正不公平的是print getType($x)会导致object。我们有object类型,但严格说我们会返回object

您可能会说这实际上没有必要,我可以写: Cat,但是当我覆盖PHPDoc中有* @return object|null */的方法时,这不是我需要的。

3 个答案:

答案 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;
}

然后你可以确定你的函数返回你期望的对象。