Den nemmeste måde er nok at gøre dit objekt "castable" til et array.
Hvis de egenskaber, du vil gemme, er public
, du kan bare gøre:
$array = (array)$foo;
Ellers en toArray
metode, eller få den til at implementere en Iterator
grænsefladen fungerer:
class Foo implements IteratorAggregate {
protected $bar = 'hello';
protected $baz = 'world';
public function getIterator() {
return new ArrayIterator(array(
'bar' => $this->bar,
'baz' => $this->baz,
));
}
}
Du kan selvfølgelig også bruge get_object_vars
, Reflektion og sådan i stedet for at hardkode egenskabslisten i getIterator
metode.
Så bare:
$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);
Afhængigt af hvordan du vil gemme dine objekter, vil du måske bruge DBRefs i stedet for at gemme indlejrede objekter på én gang, så du nemt kan find
dem hver for sig bagefter. Hvis ikke, skal du bare lave din toArray
metode rekursiv.