PHPStanでUnionの型で怒られた場合の対応方法

PHPStanは型をチェックしているのですが、たまにUnion型で怒られることがあります。

$u = $this->getUsers();

//$u は array|string だと推論されるが、stringとして扱いたい

getUsers()は array|stringを返すメソッドだとします。

この場合、$u は array|string になるのですが、続く処理で $u を string として扱いたい場合があります。

その場合は、is_string()を使って型を狭めます。

$u = $this->getUsers();

if (is_string($u)) {
  // $u は string だと判定される
}

公式ドキュメントも参考になります。

PHP

Posted by たみぼうず