オブジェクトが入っているはずの変数がnullのままメソッドを呼ぶと発生する、PHPで最も遭遇率の高いエラーのひとつです。
<?php
class User {
public function getName() { return "太郎"; }
}
function findUser($id) {
if ($id === 1) return new User();
return null; // 見つからないとnull
}
$user = findUser(2);
echo $user->getName();
<?php
class User {
public function getName() { return "太郎"; }
}
function findUser($id) {
if ($id === 1) return new User();
return null;
}
$user = findUser(2);
echo $user?->getName() ?? "ユーザーが見つかりません";
▶ 修正済みコードを実行エディタで開く
nullを返す可能性がある関数の戻り値は、使う前に必ず確認します。PHP 8以降ならnullsafe演算子 ?->が便利で、nullの場合はメソッドを呼ばずに式全体がnullになります。??(null合体演算子)と組み合わせると代替値も簡潔に書けます。