Возможно, самый простой способ - сделать ваш объект "преобразовываемым" в массив.
Если вы хотите сохранить public
свойства, вы можете просто сделать:
$array = (array)$foo;
В противном случае, метод toArray
или создание интерфейса Iterator
work:
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);
В зависимости от того, как вы хотите хранить ваши объекты, вы можете захотеть использовать DBRef вместо хранения вложенных объектов сразу, чтобы потом вы могли легко find
отдельно их хранить.Если нет, просто сделайте ваш метод toArray
рекурсивным.