Nejjednodušší způsob je pravděpodobně učinit váš objekt „přenositelným“ do pole.
Pokud jsou vlastnosti, které chcete uložit, public
, můžete udělat:
$array = (array)$foo;
Jinak toArray
nebo přimět ji k implementaci Iterator
rozhraní bude fungovat:
class Foo implements IteratorAggregate {
protected $bar = 'hello';
protected $baz = 'world';
public function getIterator() {
return new ArrayIterator(array(
'bar' => $this->bar,
'baz' => $this->baz,
));
}
}
Samozřejmě můžete také použít get_object_vars
, Reflection a podobně místo pevného kódování seznamu vlastností v getIterator
metoda.
Pak jen:
$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);
V závislosti na tom, jak chcete ukládat své objekty, možná budete chtít použít DBRefs namísto ukládání vnořených objektů najednou, takže můžete snadno find
je pak samostatně. Pokud ne, jednoduše vytvořte toArray
rekurzivní metoda.