La forma más fácil es probablemente hacer que su objeto se pueda convertir en una matriz.
Si las propiedades que desea almacenar son public
, solo puedes hacer:
$array = (array)$foo;
De lo contrario, un toArray
o hacer que implemente un Iterator
la interfaz funcionará:
class Foo implements IteratorAggregate {
protected $bar = 'hello';
protected $baz = 'world';
public function getIterator() {
return new ArrayIterator(array(
'bar' => $this->bar,
'baz' => $this->baz,
));
}
}
Obviamente, también puedes usar get_object_vars
, Reflection y demás en lugar de codificar la lista de propiedades en el getIterator
método.
Entonces, solo:
$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);
Dependiendo de cómo desee almacenar sus objetos, es posible que desee utilizar DBRefs en lugar de almacenar todos los objetos anidados a la vez, para que pueda find
fácilmente después por separado. Si no, simplemente haga su toArray
método recursivo.