PossiblyNullArgument
Emitted when calling a function with a value that’s possibly null when the function does not expect it
<?php
function foo(string $s): void {}
foo(rand(0, 1) ? "hello" : null);
Common Problem Cases
Using a Function Call inside if
<?php
if (is_string($cat->getName()) {
foo($cat->getName());
}
This fails since it's not guaranteed that subsequent calls to $cat->getName()
always give the same result.
Possible Solutions
Use a variable:
<?php
$catName = $cat->getName();
if (is_string($catName) {
foo($catName);
}
unset($catName);
Or add @psalm-mutation-free
to the declaration of the function
Calling Another Function After if
<?php
if (is_string($cat->getName()) {
changeCat();
foo($cat->getName());
}
This fails since psalm cannot know if changeCat()
does actually modify $cat
.
Possible Solutions
- Add
@psalm-mutation-free
to the declaration of the other function (here:changeCat()
) too - Use a variable: See above