プログラミング

【PHP】staticでない関数を使おうとしてエラー(should not be called statically)

あきぞらです。

PHPで実装をしていて、

Non-static method Hoge::getHogeName() should not be called statically

というようなエラーが出てしまう事象に遭遇しました。

staticでない関数をそれっぽく呼び出してしまい、エラーとなってしまいました。

備忘もかねて、今日はそのエラーと解消方法を紹介したいと思います。

staticな関数とは

staticな関数とは、以下のようなに定義されたメソッドをいいます。

クラスをインスタンス化しなくても使え、「Hoge::getHogeName()」のような記載で使うことができます。

class Hoge {
  public static function getHogeName() {
    return 'hoge';
  }
}

今回のエラーと原因

今回は、staticな関数を呼ぶ時のように、

Hoge::getHogeName()

と関数を呼んでいたにもかかわらず、

「static」を付けていなかったことが原因でした。

class Hoge {
  // static をつけていない
  public function getHogeName() {
    return 'hoge';
  }
}

こんな感じに怒られるので注意です。

Non-static method Hoge::getHogeName() should not be called statically

気をつけましょう。

-プログラミング
-

Copyright© あきぞらてっく , 2020 All Rights Reserved Powered by AFFINGER5.