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);
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.
- Use a variable:
$catName = $cat->getName(); if (is_string($catName) { foo($catName); } unset($catName);
- Add
@psalm-mutation-free
to the declaration of the function
if (is_string($cat->getName()) {
changeCat();
foo($cat->getName());
}
This fails since psalm cannot know if changeCat()
does actually modify $cat
.
- Add
@psalm-mutation-free
to the declaration of the other function (here:changeCat()
) too - Use a variable: See above