Skip to content

Latest commit

 

History

History
48 lines (36 loc) · 1.17 KB

PossiblyNullArgument.md

File metadata and controls

48 lines (36 loc) · 1.17 KB

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

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:
    $catName = $cat->getName();
    if (is_string($catName) {
        foo($catName);
    }
    unset($catName);
  • Add @psalm-mutation-free to the declaration of the function

Calling Another Function After if

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