De gemakkelijkste manier is waarschijnlijk om uw object "castable" te maken naar een array.
Als de eigenschappen die u wilt opslaan public
zijn , je kunt gewoon doen:
$array = (array)$foo;
Anders een toArray
methode, of het implementeren van een Iterator
interface werkt:
class Foo implements IteratorAggregate {
protected $bar = 'hello';
protected $baz = 'world';
public function getIterator() {
return new ArrayIterator(array(
'bar' => $this->bar,
'baz' => $this->baz,
));
}
}
Uiteraard kunt u ook get_object_vars
. gebruiken , Reflection en dergelijke in plaats van hardcoderen van de eigenschappenlijst in de getIterator
methode.
Dan, gewoon:
$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);
Afhankelijk van hoe u uw objecten wilt opslaan, wilt u misschien DBref's gebruiken in plaats van geneste objecten in één keer op te slaan, zodat u gemakkelijk kunt find
ze daarna apart. Zo niet, maak dan gewoon uw toArray
methode recursief.