If I have strict_types
on, and I pass in an int
to a function that's set to accept ?float
as the param type, PhpStorm puts a warning, but the code still executes fine. Interestingly, PhpStorm doesn't put a warning if the param type is just float
(without the ?
).
For example:
<?
declare(strict_types=1);
function strictTypesTest (?float $float) {
echo $float;
}
strictTypesTest(42);
The last line (strictTypesTest(42);
) has a red underline and a warning saying Parameter is expected to be 'float|null', 'int' given
:
The code executes fine, because on the PHP docs on strict types, there's one exception to the strict types rule:
The only exception to this rule is that an integer may be given to a function expecting a float.
If I only put float
as the param type (instead of ?float
), then PhpStorm doesn't put a warning.
Why is the warning only triggering when I add the ?