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);

        }
}

在填充 BB 类时,我不想对 $b 运行单独的查询,因为 AA 类中的查询已经获取了数据。如何将值传递给 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 回答