Я хочу загрузить 2 объекта из моей БД. Первый объект является родительским и вторым наследником первого (в PHP и БД).
Я создал 2 класса:
(это всего лишь пример, а не реальный код, поэтому не пытайтесь исправить это ;-))
class A{
...
public static function get($id){
$query = "SELECT id,field1,field2 FROM table_A WHERE id = $id";
$result = request($query);
return load_object_A_instance($result);
}
...
}
class B extends A{
...
public static function get($id){
$query = "SELECT id,field3,field4 FROM table_B WHERE id = $id";
$result = request($query);
return load_object_B_instance($result);
}
...
}
Я бы создал экземпляр объекта B со своими собственными свойствами и свойствами объекта A в «том же» действии Как я могу это сделать?
У меня есть некоторые идеи, но я не вижу, как их реализовать:
class B extends A{
...
public static function get($id){
$query = "SELECT id, field3, field4 FROM table_B WHERE id = $id";
$result = request($query);
$B = load_object_B_instance($result);
if($B != empty/null){
$B = merge(A::get($B->id),$B); // <== that's the part I don't know how to implement
}
return $B;
}
...
}
Редактировать:
Я нашел первое решение (оно не чистое, но ...)
echo $obj->name; //show: carlos
echo $obj2->lastname; //show: montalvo here
$obj_merged = (object) array_merge((array) $obj, (array) $obj2);
$obj_merged->name; //show: carlos
$obj_merged->lastname; //show: montalvo here;
Решение найдено здесь: Как объединить два объекта?