非静的メソッドに静的関数としてアクセスしようとすると、PHP はエラー メッセージ「厳格な標準: 非静的」を生成します。静的メソッドは静的に呼び出さないでください。この問題は、最初にクラスのオブジェクトをインスタンス化せずにクラス メソッドを利用した場合によく発生します。
1.クラス オブジェクトを指定:
この問題を解決するには、クラスのメソッドを呼び出す前にクラスのインスタンスを作成する必要があります。たとえば、
の代わりに、
2 を使用します。メソッドを静的としてマークする:
クラスをインスタンス化せずにメソッドを呼び出す場合は、クラス内でメソッドを静的として定義できます。例:
これにより、クラス名を使用してメソッドを直接呼び出すことができます:
1。テスト容易性:
静的メソッドとシングルトンはテスト容易性を妨げる可能性があることに注意してください。テスト機能を向上させるために、代替の設計パターンを検討することもできます。
2.コンストラクターの最適化:
コンストラクターに過剰なタスクを配置しないようにします。コンストラクターは、オブジェクトを有効な状態に設定することのみを処理する必要があります。データの依存関係をコンストラクターから直接取得するのではなく、挿入することを検討してください。コンストラクターは値を返すことができず、常に void を返すことに注意してください。
以上がPHP「非静的メソッドの静的呼び出し」エラーを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。