Det enklaste sättet är förmodligen att göra ditt objekt "castable" till en array.
Om egenskaperna du vill lagra är public
, du kan bara göra:
$array = (array)$foo;
Annars en toArray
metod, eller få den att implementera en Iterator
gränssnittet kommer att fungera:
class Foo implements IteratorAggregate {
protected $bar = 'hello';
protected $baz = 'world';
public function getIterator() {
return new ArrayIterator(array(
'bar' => $this->bar,
'baz' => $this->baz,
));
}
}
Självklart kan du också använda get_object_vars
, Reflection och sådant istället för att hårdkoda egenskapslistan i getIterator
metod.
Sedan är det bara:
$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);
Beroende på hur du vill lagra dina objekt, kanske du vill använda DBRefs istället för att lagra kapslade objekt på en gång, så att du enkelt kan find
dem separat efteråt. Om inte, gör bara din toArray
metod rekursiv.