プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP5.6で「Non-static method 【x】 should not be called statically in 【y】 on line 【z】」とかいうエラーが出た。
結論から書くと

staticにしていないメソッド(関数)をstaticっぽい扱いで呼び出していた

のが原因でした。

それでは詳細を書いていきます。

とある処理を実行したら

Non-static method ClassHoge::DispHoge() should not be called statically in C:\test\test01.php on line 12

とかいうエラーが出やがりましてね。

何でじゃ(--?となったのが今回のきっかけです。

ほんで、あれやこれやと調べたらstatic宣言していないメソッドに対して
staticっぽい呼び出しをしていたのが原因でした。

実際に例を挙げて説明しましょう。
順番が前後しますが、これがOKな処理ですφ(--)

<?php

class ClassHoge{
    public static function DispHoge() {
        print "hoge";
    }
}

//------------
// main処理
//------------
ClassHoge::DispHoge();

これは普通に動きます。
画面上には「hoge」と表示されました。

次に、このコードの「static」を消しました。

public static function DispHoge() {



public function DispHoge() {

にして

<?php

class ClassHoge{
    public function DispHoge() {    //「staticを消した」
        print "hoge";
    }
}

//------------
// main処理
//------------
ClassHoge::DispHoge();

のようにしたわけです。

その結果、上記のエラーが表示されました。

いまさらですが、エラーメッセージの中に、めっちゃ
「Non-static method」や「should not be called statically」と書いてありますね。

ということで「static」が付いてないメソッドを
staticっぽく呼び出すのを止めればエラーは消えます。

そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事