7

静的メソッドのみでクラスを拡張する子クラスがあります。元の開発者が本当にシングルトンを望んでいたが、代わりに静的を使用したため、この子クラスを静的ではなくシングルトンにしたいと思います (静的クラスのすべてのメソッドが Init() 関数 (基本的にはコンストラクター) を呼び出すため、明らかです)。

親のメソッドのほとんどは、子で上書きする必要はありませんが、次のようなメソッドを記述する必要は避けたいと思います。

public function Load($id)
{
     return parent::Load($id);
}

メソッドをまったく上書きせずに使用したい場合:

$child->Load($id);

静的メソッドを非静的に呼び出すことは可能ですか? インスタンスオブジェクトで静的オブジェクトを拡張することは可能ですか? 私はそれを試すことができ、うまくいく可能性が高いことを知っています (PHP は非常に寛容です) が、心配する必要があるかどうかはわかりません。

4

2 に答える 2

11
  • 静的メソッドを継承できますか?

はい

  • 静的メソッドをオーバーライドできますか?

はい。ただし、期待どおりに動作するのは PHP 5.3 以降 のみselfです。で定義)。

  • 静的メソッドを非静的に呼び出すことは可能ですか?

はい、しかし負け$thisます。(まだ) 警告は表示されませんが、間違った方法で呼び出す理由もありません。

于 2013-03-29T16:20:13.833 に答える