我有一些方法可以返回 两种返回类型之一。我正在使用一个利用 MCV 的框架,因此特别重构这几个函数并不吸引人。
是否可以声明返回类型返回一个或另一个并在其他任何事情上失败?
function test(): ?
{
if ($this->condition === false) {
return FailObject;
}
return SucceedObject;
}
原文由 myol 发布,翻译遵循 CC BY-SA 4.0 许可协议
自 PHP 8+ 起,您可以使用 联合类型:
自 PHP 4 起在所有版本中都可用的另一种方法是让两个对象共享一个接口。例子:
在此示例中,
ReturnInterface
为空。它的存在支持所需的返回类型声明。您还可以使用基础类,可能是抽象类。
对我来说,对于这个用例,接口比联合类型更清晰、更可扩展。例如,如果我稍后想要一个
WarnObject
我只需将其定义为扩展ReturnInterface
而不是遍历所有签名并将它们更新为FailObject|SuccessObject|WarnObject