Najprostszym sposobem jest prawdopodobnie uczynienie obiektu "rzucalnym" do tablicy.
Jeśli właściwości, które chcesz przechowywać, są public
, możesz po prostu zrobić:
$array = (array)$foo;
W przeciwnym razie toArray
lub zaimplementowanie Iterator
interfejs będzie działał:
class Foo implements IteratorAggregate {
protected $bar = 'hello';
protected $baz = 'world';
public function getIterator() {
return new ArrayIterator(array(
'bar' => $this->bar,
'baz' => $this->baz,
));
}
}
Oczywiście możesz również użyć get_object_vars
, Reflection i tym podobne zamiast na stałe zakodować listę właściwości w getIterator
metoda.
Następnie po prostu:
$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);
W zależności od tego, jak chcesz przechowywać swoje obiekty, możesz chcieć użyć DBRefs zamiast przechowywać wszystkie zagnieżdżone obiekty na raz, dzięki czemu możesz łatwo find
je później osobno. Jeśli nie, po prostu ustaw toArray
metoda rekurencyjna.