所以,我遇到了一些 php OO 的问题。我认为代码将最好地解释它:
class foo {
$someprop;
public function __construct($id){
$this->populate($id);
}
private function populate($id){
global $db;
// obviously not the call, but to illustrate the point:
$items = $db->get_from_var1_by_var2(get_class($this),$id);
while(list($k,$v) = each($items)){
$this->setVar($k,$v);
}
}
private function setVar($k,$v){
// filter stuff, like convert JSON to arrays and such.
$this->$k = $v;
}
}
class bar extends foo {
$otherprop;
public function __construct($id){
parent::__construct($id);
}
private function setVar($k,$v){
// different filters than parent.
$this->$k = $v;
}
}
现在,假设我的 foo 表中有 someprop,而我的 bar 表中有 otherprop,当我传入 ID 时,这应该在我的对象上设置 vars。
但是,出于某种原因, foo 工作得很好,但 bar 没有设置任何东西。
我的假设是它在 $this->setVar() 调用中分崩离析,并且调用了错误的 setVar,但是如果 get_class($this) 正在工作(它是),那么 $this 不应该是 bar,并且通过关联,setVar() 是 $bar 方法吗?
有人看到我缺少/做错了什么吗?