警告の原因

「Deprecated: Non-static method should not be called statically」という警告は、PHPで非静的メソッドが静的に呼び出されたときに発生します。この警告は、PHPの新しいバージョンで非静的メソッドの静的呼び出しが非推奨となったことが原因です。

解決策1: メソッドを静的にする

問題のあるコード

class MyClass {
    public function myMethod() {
        // メソッドの処理
    }
}

// 静的呼び出し(警告が発生)
MyClass::myMethod();

修正後のコード

class MyClass {
    public static function myMethod() {
        // メソッドの処理
    }
}

// 正しい静的呼び出し
MyClass::myMethod();

メソッドの定義にstaticキーワードを追加することで、静的メソッドとして宣言できます。これにより、静的呼び出しが可能になり、警告が解消されます。

解決策2: インスタンスを作成してからメソッドを呼び出す

メソッドを静的にできない、または静的にしたくない場合は、クラスのインスタンスを作成してからメソッドを呼び出す方法があります。

問題のあるコード

MyClass::myMethod();

修正後のコード

$instance = new MyClass();
$instance->myMethod();

この方法では、クラスのインスタンスを作成し、そのインスタンスを通じてメソッドを呼び出します。これにより、非静的メソッドを正しく使用でき、警告を解消できます。

まとめ

  1. 「Deprecated: Non-static method should not be called statically」警告は、PHPの新バージョンでの非静的メソッドの静的呼び出しの非推奨化が原因です。
  2. 解決策1: メソッドをstaticキーワードで静的に宣言する。
  3. 解決策2: クラスのインスタンスを作成してからメソッドを呼び出す。

これらの解決策を適切に選択・実装することで、警告を解消し、より安全でモダンなPHPコードを書くことができます。