0

これは、データを保存するクラスです:

class AA{
    public $a
    public $b
    private $_obj;
    public function __constructor(){

           }
    public function populate(){
           $data = //a query to get all data I need at once including $b
           $this->a = $data->a;
           $this->b = $data->b;
           }
    public function save() {
           if ( $this->_obj instanceof BB ) {

            $this->_obj->save() // $b is a value need to be manipulated in $_obj, it's saved there.
           }

          $data=array();// save all date excluding $b
          update_data($data);

        }
}

クラス AA のクエリは既にデータを取得しているため、クラス BB にデータを入力するときに $b に対して別のクエリを実行することは避けたいと考えています。クラスBBに値を渡す方法は?

4

1 に答える 1

0

何らかの方法でデータを $_obj に渡す必要があります。好ましい方法は、両方のオブジェクト間の関係によって異なります。例えば。AA はクラス BB の拡張です。クラス BB ( class AA extends BB { }) を拡張することで変数データを共有できます。しかし、別の例として、BB が何らかのインターフェイス (プログラム インターフェイス キーワードではない) である場合は、データを BB に渡す必要があります。次のようなことをするよりも:

private $_data = null;

...

public function populate() {
    $data = //a query to get all data I need at once including $b
    $this->_data = $data;
    ...
}

public function save() {
    ...
    $this->_obj->save($this->_data); // function to process the data
    ...
}

しかし、繰り返しになりますが、これは実用的な問題というよりは設計上の問題です。あなたのコードは、この質問に知的に答えるために抽象化することです。

于 2012-08-17T10:51:23.280 に答える