A maneira mais fácil é provavelmente tornar seu objeto "castable" para um array.
Se as propriedades que você deseja armazenar são
public
, você pode simplesmente fazer:$array = (array)$foo;
Caso contrário, um
toArray
ou fazendo com que ele implemente um Iterator
interface 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, você também pode usar
get_object_vars
, Reflection e outros em vez de codificar a lista de propriedades no getIterator
método. Então, basta:
$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);
Dependendo de como você deseja armazenar seus objetos, você pode usar DBRefs em vez de armazenar objetos aninhados de uma só vez, para que você possa
find
facilmente -los separadamente depois. Se não, apenas faça seu toArray
método recursivo.