如果我有strict_types
,并且我将一个int
设置为接受?float
为参数类型的函数传递给一个函数,PhpStorm 会发出警告,但代码仍然可以正常执行。float
有趣的是,如果参数类型只是(没有) ,PhpStorm 不会发出警告?
。
例如:
<?
declare(strict_types=1);
function strictTypesTest (?float $float) {
echo $float;
}
strictTypesTest(42);
最后一行 ( strictTypesTest(42);
) 有一条红色下划线和一条警告信息Parameter is expected to be 'float|null', 'int' given
:
代码执行得很好,因为在严格类型的PHP 文档中,严格类型规则有一个例外:
此规则的唯一例外是可以将整数提供给期望浮点数的函数。
如果我只float
输入参数类型(而不是?float
),那么 PhpStorm 不会发出警告。
为什么只有在我添加时才会触发警告?