如何将数据成员值传递给父对象内的私有对象?

时间:2012-08-17 10:43:47

标签: php class object

这是我保存数据的类:

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类?

1 个答案:

答案 0 :(得分:0)

您必须以某种方式将数据传递给$ _obj。什么是首选方式取决于两个对象之间的关系。如果是AA是BB类的扩展,您可以通过扩展BB类(class AA extends BB { })来共享变量数据。但是,如果BB是另一个给出的示例,某种类型的接口(不是programatical接口关键字),您应该将数据传递给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
    ...
}

但同样,这更像是一个设计问题,而不是一个实用主义问题。你的代码是抽象的,以智能地回答这个问题。