ホームページ  >  記事  >  バックエンド開発  >  PHP で非静的メソッドを静的に呼び出すとエラーが発生するのはなぜですか?

PHP で非静的メソッドを静的に呼び出すとエラーが発生するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-24 11:42:11833ブラウズ

Why Does Calling a Non-Static Method Statically in PHP Result in an Error?

静的メソッド呼び出しの静的メソッド エラーについて

PHP では、提供されたコード スニペットで次のエラー メッセージが発生します:

Strict standards: Non-static method
Page::getInstanceByName() should not
be called statically in
/var/www/webworks/index.php on line 12

このエラーは、Page クラスの非静的メソッドが静的に呼び出された場合に発生します。

修正

この問題を解決するには、Page クラスの getInstanceByName() メソッドを静的として宣言する必要があります。

function getInstanceByName($name='')

の行を

public static function getInstanceByName($name='')

に変更します。メソッドを静的として宣言すると、

$r = Page::getInstanceByName($page);

追加考慮事項

  • 静的メソッドとテスト容易性: 静的メソッドはモックまたはスタブ化できないため、静的メソッドに依存するコードのテストが困難になる可能性があります。代わりに、コンストラクターまたはメソッドを通じてオブジェクトにデータを渡す依存関係注入の使用を検討してください。
  • コンストラクターの複雑さ: Page クラスのコンストラクターが、データベース。コンストラクターは、複雑な操作を実行するのではなく、オブジェクトの状態を初期化するためにのみ使用する必要があります。

以上がPHP で非静的メソッドを静的に呼び出すとエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。