gpt4 book ai didi

php - 是否可以在 PHP 7 上指定多种返回类型?

转载 作者:IT王子 更新时间:2023-10-29 01:01:05 25 4
gpt4 key购买 nike

我有一些方法可以返回两种返回类型之一。我正在使用一个利用 MCV 的框架,因此特别重构这几个函数并不吸引人。

是否可以声明返回类型返回一个或另一个并在其他任何事情上失败?

function test(): ?
{
if ($this->condition === false) {
return FailObject;
}

return SucceedObject;
}

最佳答案

自 PHP 8+ 起,您可以使用 union types :

function test(): FailObject|SuccessObject {}

自 PHP 4 以来的所有版本中都可用的另一种方法是让两个对象共享一个接口(interface)。示例:

interface ReturnInterface {}
class FailObject implements ReturnInterface {}
class SuccessObject implements ReturnInterface {}
function test(): ReturnInterface {}

在这个例子中,ReturnInterface 是空的。它的存在本身就支持所需的返回类型声明。

您也可以使用基类,可能是抽象类。


对我来说,对于这个用例,接口(interface)比联合类型更清晰、更可扩展。例如,如果我以后想要一个 WarnObject,我只需要将它定义为扩展 ReturnInterface——而不是遍历所有签名并将它们更新为 FailObject|SuccessObject |警告对象

关于php - 是否可以在 PHP 7 上指定多种返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37033142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com