根据PHP文档中与返回类型声明相关的说明(我加粗部分):
这意味着方法...在默认的弱模式下,如果返回的值不是正确的类型,那么它们将被强制转换为正确的类型。
returnInt()
返回的值将被自动转换为正确的类型。class A {
public function returnInt(): int {
return "6a";
}
}
将返回int值6(正常情况下应该如此)。
然而,从上面的函数中返回null
会抛出TypeError异常,尽管null可以通过(int)null
轻松强制转换为整数0。
致命错误 未捕获的TypeError:A :: returnInt()的返回值必须是integer类型,但返回了null
为什么这在null值中不起作用?
PHP在尝试类型强制转换时使用的逻辑是什么?
public function returnInt(): ?int
来声明返回整数类型,但是无法将 null 强制转换为 int。 - Frankichnull
不是一个真正的类型,它只是一个值,更像C++中的void
。 - Daniel W.