Если у меня есть strict_types
и я прохожу в int
к функции, которая должна принимать ?float
в качестве типа параметра PhpStorm выдает предупреждение, но код по-прежнему выполняется нормально. Интересно, что PhpStorm не выводит предупреждение, если тип параметра просто float
(без ?
).
Например:
<?
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
как тип параметра (вместо ?float
), то PhpStorm не ставит предупреждение.
Почему предупреждение срабатывает только при добавлении ?
Кажется, это ошибка, я подал здесь: https://youtrack.jetbrains.com/issue/WI-38446
Других решений пока нет …