3

私はしばらくの間 php を使用してきましたが、クラスにプロパティを格納する最良の方法はどれか常に疑問に思っていました。

最初の方法は、データをプロパティとして保存することです。

class Foo{
    private $id;
    private $name;

    function __get($var){
        return $this->$var;
    }
}

もう 1 つの方法は、データを 1 つの配列に格納してから、マジック メソッドを使用してクラス内の通常の変数として取得することです。

class Bar{
    private $data;

    function __get($var){
        return $this->data[$var];
    }
}

どちらの方法でも同じ目標を達成できるので、どちらが優れているのでしょうか? またその理由は?

4

2 に答える 2

0

これは、OO パラダイムの質問です。

マジック get 関数は、getter を書くための怠惰な方法として使用されます。したがって、メンバーごとにゲッターを記述する必要はありません。

get_name()別の方法は、get_id()関数ごとに のようなゲッターを作成することです。

2 番目の方法は、すべてのメンバーを配列に入れただけなので、比較することはできません。これは間違いなく遅くなります。これは、呼び出し時に適切なキーを見つけるために、あるレベルで PHP が構造を反復処理する必要があるためです。$this->data[$var]

要約すれば。クラスが表すものをより適切にモデル化するため、 top メソッドの方が優れています。2 つ目は、クラスの要点を失います。唯一のメンバーが連想配列である場合、なぜクラスがあるのでしょうか。

于 2013-09-27T07:02:42.633 に答える