Итак, у меня проблемы с некоторыми вещами 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, это должно установить переменные для моего объекта при передаче идентификатора.
Но по какой-то причине foo работает отлично, но bar ничего не устанавливает.
Я предполагаю, что он разваливается при вызове $ this-> setVar () и вызывает неправильный setVar, но если get_class ($ this) работает (что есть), не должно ли $ this быть bar а по ассоциации setVar () будет методом $ bar?
Кто-нибудь видит что-то, что я пропускаю / делаю неправильно?