我在文档中没有发现有关这方面的任何信息,但似乎存在这种情况是合乎逻辑的。如何使类型提示返回object类型的值?(我指的是任何对象,而不是\DateTime等的某个对象。)
function getParticipant(): ?object
{
//...
$x = new Cat();
return $x;
}它不起作用,而真正不公平的是,print getType($x)将导致object。因此,我们有一个object类型,但不能严格地说我们将返回一个object?
您可能会说,这真的是不必要的,我本可以只编写: Cat,但是当我覆盖一个在他的PHPDoc中包含了* @return object|null */的方法时,这并不是我所需要的。
发布于 2017-06-19 16:06:47
对于通用object的类型提示还不存在于PHP7.2.0版本之后,这是RFC对象类型提示在2017年5月31日以32票对3票通过的结果。
尽管通常(在可能的情况下),最好还是向特定的类或接口输入提示。
发布于 2017-06-19 13:38:31
:object不解析具有此类型的变量。实际上,PHP将查找名为object的类,并期望返回该类的实例。
使用您的示例,您应该指示该函数将返回Cat的一个实例,因此它应该如下所示:
function getParticipant(): Cat
{
return new Cat();
}我想说的是,PHPDoc说object将被归还是很好的。IDE应该解决这个问题,对于PHP解释器来说,这并不重要。
如果您正在覆盖方法,您可以简单地用@return覆盖PHPDoc语句。
发布于 2017-06-19 13:38:43
我无法找到确切的解释,但目前您可以返回类、标量值,而且从PHP7.1开始,您可以使用void作为返回值。但在您的示例中,"object“作为返回值并不存在。
在我看来,检查返回的对象更有意义,以明确返回正确的对象。所以在你的情况下:
function getParticipant(): Cat
{
//...
$x = new Cat();
return $x;
}然后,您可以确保您的函数返回您期望的对象。
https://stackoverflow.com/questions/44631968
复制相似问题