あきぞらです。
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
気をつけましょう!