Il modo più semplice è probabilmente rendere il tuo oggetto "castabile" in un array.
Se le proprietà che desideri memorizzare sono public
, puoi semplicemente fare:
$array = (array)$foo;
Altrimenti, un toArray
metodo, o facendogli implementare un Iterator
l'interfaccia funzionerà:
class Foo implements IteratorAggregate {
protected $bar = 'hello';
protected $baz = 'world';
public function getIterator() {
return new ArrayIterator(array(
'bar' => $this->bar,
'baz' => $this->baz,
));
}
}
Ovviamente puoi anche usare get_object_vars
, Reflection e simili invece di codificare l'elenco delle proprietà in getIterator
metodo.
Quindi, solo:
$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);
A seconda di come vuoi archiviare i tuoi oggetti, potresti voler usare DBRefs invece di memorizzare oggetti nidificati tutti in una volta, così puoi facilmente find
in seguito separatamente. In caso contrario, crea il tuo toArray
metodo ricorsivo.