
あきぞらです。
PHPで開発をしていて、
Non-static method Hoge::getHogeName() should not be called statically
というエラーに遭遇しました。
今回はこのエラーと解消方法を紹介したいと思います!
should not be called statically エラーの原因
「should not be called statically」エラーの原因は、
staticでない関数を「static 」に呼び出してしまったことにあります。
では、「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
気をつけましょう!