Вероятно най-лесният начин е да направите обекта си "преливащ" към масив.
Ако свойствата, които искате да съхраните, са public
, можете просто да направите:
$array = (array)$foo;
В противен случай, toArray
или да го накарате да реализира Iterator
интерфейсът ще работи:
class Foo implements IteratorAggregate {
protected $bar = 'hello';
protected $baz = 'world';
public function getIterator() {
return new ArrayIterator(array(
'bar' => $this->bar,
'baz' => $this->baz,
));
}
}
Очевидно можете също да използвате get_object_vars
, Reflection и подобни вместо твърдо кодиране на списъка със свойства в getIterator
метод.
След това просто:
$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);
В зависимост от това как искате да съхранявате вашите обекти, може да искате да използвате DBRefs вместо да съхранявате всички вложени обекти наведнъж, така че можете лесно да find
след това ги отделно. Ако не, просто направете своя toArray
рекурсивен метод.