Cách dễ nhất có lẽ là làm cho đối tượng của bạn "có thể cast" thành một mảng.
Nếu các thuộc tính bạn muốn lưu trữ là public
, bạn chỉ có thể làm:
$array = (array)$foo;
Nếu không, một toArray
hoặc làm cho nó triển khai Iterator
giao diện sẽ hoạt động:
class Foo implements IteratorAggregate {
protected $bar = 'hello';
protected $baz = 'world';
public function getIterator() {
return new ArrayIterator(array(
'bar' => $this->bar,
'baz' => $this->baz,
));
}
}
Rõ ràng, bạn cũng có thể sử dụng get_object_vars
, Phản chiếu và tương tự thay vì mã hóa danh sách thuộc tính trong getIterator
phương pháp.
Sau đó, chỉ cần:
$foo = new Foo;
$array = iterator_to_array($foo);
$mongodb->selectCollection('Foo')->insert($array);
Tùy thuộc vào cách bạn muốn lưu trữ các đối tượng của mình, bạn có thể muốn sử dụng DBRefs thay vì lưu trữ tất cả các đối tượng lồng nhau cùng một lúc, vì vậy bạn có thể dễ dàng find
chúng riêng biệt sau đó. Nếu không, chỉ cần đặt toArray
của bạn phương thức đệ quy.