Le moyen le plus simple est probablement de rendre votre objet "castable" dans un tableau.
Si les propriétés que vous souhaitez stocker sont public
, vous pouvez simplement faire :
$array = (array)$foo;
Sinon, un toArray
ou lui faire implémenter un Iterator
l'interface fonctionnera :
class Foo implements IteratorAggregate {
protected $bar = 'hello';
protected $baz = 'world';
public function getIterator() {
return new ArrayIterator(array(
'bar' => $this->bar,
'baz' => $this->baz,
));
}
}
Évidemment, vous pouvez également utiliser get_object_vars
, Reflection et autres au lieu de coder en dur la liste des propriétés dans le getIterator
méthode.
Ensuite, juste :
$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);
Selon la manière dont vous souhaitez stocker vos objets, vous pouvez utiliser des DBRefs au lieu de stocker tous les objets imbriqués en même temps, afin de pouvoir facilement find
séparément ensuite. Sinon, créez simplement votre toArray
méthode récursive.