【发布时间】:2020-11-25 16:01:25
【问题描述】:
我知道在使用declare(strict_types=1) 时,我必须传递给定类型的参数,否则会引发Exception,但有一个问题:
declare(strict_types=1);
function add(int $firstNumber, int $secondNumber)
{
$firstNumber = "example";
return $firstNumber . " " . $secondNumber;
}
我的问题是,如果声明了 int,为什么允许我将 $firstNumber 的类型更改为 string?
例如,在 Java 中,我不能以这种方式进行强制转换。参数类型int 必须保持int 否则代码甚至无法编译。
【问题讨论】:
-
AFAIK,它不会生成严格类型的变量,而是函数参数和返回类型。似乎变量仍然允许松散类型。