他のクラスを拡張し、クラス内の特定の設定に基づいて機能を提供するクラスを処理する場合、2 つの異なる実装が見られます。
- 変数は、設定を保存するために使用されます。
- メソッドは、設定を返すために使用されます。
変数の使用:
class Model {
var $fields = array();
function getFields() {
return array_keys($this->fields);
}
function getRules() {
return $this->fields;
}
}
class Person extends Model {
var $fields = array(
'name' => array('maxLength'=>10),
'email' => array('maxLength'=>50, 'validEmail'=>true),
);
}
メソッドの使用:
class Model {
function getFields() {}
}
class Person extends Model {
function getFields() {
return array('name','email');
}
function getRules() {
return array(
'name' => array('maxLength'=>10),
'email' => array('maxLength'=>50, 'validEmail'=>true),
);
}
}
どちらの例でも同じ結果が得られます。 と のようなことができます$person->getFields()
が、 method-example では、フィールドがと の両方で実際に定義されており、毎回配列を計算する必要$person->getRules()
があるため、「重複した」フィールド リストは好きではありません。メソッドで求められます。一方で、すべてのオブジェクトがすべての設定を変数に格納するのは好きではありません。資源の無駄遣いのようです。だから私はちょうど良い方法が何であるか疑問に思っています。$person->getFields()
$person->getRules()
私の主な質問は次のとおりです。
- どちらか一方の方法を選択するパフォーマンス上の理由はありますか? 2)
- OOP ロジック/プログラミングの容易さ/他の方法を選択するその他の理由はありますか?