gpt4 book ai didi

php - PHP 7 返回类型强制如何为 null 工作?

转载 作者:可可西里 更新时间:2023-11-01 00:28:29 25 4
gpt4 key购买 nike

根据 PHP documentation对于返回类型声明(强调我的):

.... In the default weak mode, returned values will be coerced to the correct type if they are not already of that type.

这意味着方法returnInt()

class A {
public function returnInt(): int {
return "6a";
}
}

将返回 int 值 6(应该如此)。

然而,从上面的函数返回 null 会抛出 TypeError,即使可以使用 (int) null 轻松地将 null 强制转换为整数 0

FATAL ERROR Uncaught TypeError: Return value of A::returnInt() must be of the type integer, null returned

为什么这对空值不起作用?

PHP 在尝试类型强制时使用什么逻辑?

最佳答案

这是预期的设计。您可以在 http://wiki.php.net/rfc/return_types 找到此功能的原始 RFC。 .

特别是 Disallowing NULL on Return Types 一节指出:

this type of situation is common in many languages including PHP. By design this RFC does not allow null to be returned in this situation for two reasons:

  1. This aligns with current parameter type behavior. When parameters have a type declared, a value of null is not allowed.
  2. Allowing null by default works against the purpose of type declarations. Type declarations make it easier to reason about the surrounding code. If null was allowed the programmer would always have to worry about the null case.

现在,我在这个 rfc 中看不到任何关于类型转换的讨论,而官方文档有,所以 null 很可能没有被转换,仅仅是因为 RFC 明确表示它不起作用。我个人认为将 null 保留为奇数是很奇怪的。它也可能被认为与可空类型 rfc 相关联,这可能对 null 的工作方式产生了影响。

我不能说我个人同意它的结果,但我不是核心开发人员:)。

关于php - PHP 7 返回类型强制如何为 null 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55278037/

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