【发布时间】:2016-09-07 09:03:37
【问题描述】:
我最近开始研究 PHP 7 中引入的新类型提示,发现它是添加到我的一些应用程序中的一个非常好的和有用的补充,因此我已经这样做了,但是我有一个问题关于参数和返回类型提示。
假设我有一个基本函数,它对两个参数执行数学运算并返回一个整数。
function addTwo(int $a, int $b): int {
return $a + $b;
}
预期的参数应该是整数,我们应该希望从函数中接收一个整数值,但是这是否始终得到保证,或者是否应该在函数内进行进一步的验证,例如 is_int 以确保两个参数都是整数?
【问题讨论】:
-
何不试试看?
-
我已经做了一些测试,但是我想知道它是否总是得到保证,或者是否存在一些可能不同并返回无效结果的用例
-
如果您提供给函数的不是整数,它将返回一个可捕获的错误,因此您将有一个错误或返回一个 int。
-
如果你把一个参数注解为一个int,你会得到一个int。在 PHP 7 中,这是严格执行的(而在 PHP 5 中,如果您真的需要,有一些方法可以绕过类型检查)。我想警告您,您的函数有点危险,因为在 PHP 中添加两个整数可能会返回一个浮点数(以防溢出),这将导致返回类型异常。这可能是也可能不是您想要的。
-
这很有趣,会声明(strict_types=1);防止此问题并将类型限制为仅 int 以便无法返回浮点数,或者我必须在函数内执行进一步验证?