这是我保存数据的类:
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类?
答案 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
...
}
但同样,这更像是一个设计问题,而不是一个实用主义问题。你的代码是抽象的,以智能地回答这个问题。