0

如果我有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

参数应为'float|null','int'给定

代码执行得很好,因为在严格类型的PHP 文档中,严格类型规则有一个例外:

此规则的唯一例外是可以将整数提供给期望浮点数的函数。

如果我只float输入参数类型(而不是?float),那么 PhpStorm 不会发出警告。

为什么只有在我添加时才会触发警告?

4

1 回答 1

3

这似乎是一个错误,我在这里提交了它:https ://youtrack.jetbrains.com/issue/WI-38446

于 2017-10-16T12:07:50.150 回答