Tenemos dos objetos PHP5 y nos gustaría fusionar el contenido de uno en el segundo. No hay noción de subclases entre ellos por lo que las soluciones descritas en el siguiente tema no se pueden aplicar.
Cómo copiar un objeto PHP en un tipo de objeto diferente
//We have this:
$objectA->a;
$objectA->b;
$objectB->c;
$objectB->d;
//We want the easiest way to get:
$objectC->a;
$objectC->b;
$objectC->c;
$objectC->d;
Observaciones:
Puedes crear otro objeto que envíe las llamadas a los métodos mágicos a los objetos subyacentes. Así es como manejarías __get
, pero para que funcione completamente tendrías que sobreescribir todos los métodos mágicos relevantes. Es probable que encuentres errores de sintaxis, ya que sólo lo he escrito de memoria.
class Compositor {
private $obj_a;
private $obj_b;
public function __construct($obj_a, $obj_b) {
$this->obj_a = $obj_a;
$this->obj_b = $obj_b;
}
public function __get($attrib_name) {
if ($this->obj_a->$attrib_name) {
return $this->obj_a->$attrib_name;
} else {
return $this->obj_b->$attrib_name;
}
}
}
Buena suerte.