というスーパークラスがありLClass
ます。次に、を拡張する他のクラスを作成しますLClass
。たとえば、これはデータベース内のテーブルのクラスです。( user
、order
など...) これらの各クラスでstatic function getRecordById($id)
、配列を返す some を使用します。これらの関数の違いは、実行に異なるテーブル名を使用することです。static function getRecordById($id)
これを入れたいLClass
。問題は、その関数が静的であることです。このため、次のようなことを行う前に、いくつかの静的変数を設定する必要があります$someUser = user::getRecordById($id)
。
または他の提案はありますか?
質問する
112 次
2 に答える
3
静的メソッドのみを使用するプログラミングは、オブジェクト指向プログラミングではなく、「クラス指向」プログラミングです。そして、名前空間が少しだけある手続き型コードと本質的に同じです。静的メソッドには用途がありますが、制限があります。静的メソッドは、クラスの主な作業を行うべきではありません。
スタティックを使用してテスト容易性を損なわないようにする方法をお読みください。
于 2012-12-05T10:59:14.983 に答える
0
静的メソッドは避けてください。それと同じくらい簡単です。
元の質問に対するコメントについては、次のコード例を検討してください。
$user = new User($id);
于 2012-12-05T10:56:00.067 に答える