ホーム › エラー解決 › PHP › Call to a member function on null
PHP ERROR

PHP Call to a member function on null の原因と解決法

オブジェクトが入っているはずの変数がnullのままメソッドを呼ぶと発生する、PHPで最も遭遇率の高いエラーのひとつです。

このエラーメッセージ

PHP Fatal error: Uncaught Error: Call to a member function getName() on null

原因

❌ エラーになるコード

NG
<?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();

✅ 修正したコード

OK
<?php
class User {
    public function getName() { return "太郎"; }
}
function findUser($id) {
    if ($id === 1) return new User();
    return null;
}
$user = findUser(2);
echo $user?->getName() ?? "ユーザーが見つかりません";
▶ 修正済みコードを実行エディタで開く
progoのPHP実行環境(インストール不要・登録不要)でその場で動作を確認できます。

解決のポイント

nullを返す可能性がある関数の戻り値は、使う前に必ず確認します。PHP 8以降ならnullsafe演算子 ?->が便利で、nullの場合はメソッドを呼ばずに式全体がnullになります。??(null合体演算子)と組み合わせると代替値も簡潔に書けます。

よくある質問

?->演算子はいつから使える?
PHP 8.0以降です。それ以前のバージョンではif ($user !== null)のような明示的なnullチェックを使ってください。
どの変数がnullなのか調べるには?
エラーメッセージの行番号の直前でvar_dump($user);を実行すると、中身がNULLかオブジェクトかを確認できます。