Отличный PHP-драйвер MongoDB позволяет мне писать для написания PHP-кода, который выглядит следующим образом:
$mongo = new mongo("mongodb://path.to.my.server.com:27017");
$cnt = $mongo->db_name->table->count();
Более того, я также могу написать аналогичный код для несуществующих таблиц:
$mongo->new_db_name->table->save(array('name' => 'Jimmy'));
echo $mongo->new_db_name->table->count();
Класс Mongo
является родительским объектом, созданным конструктором Mongo()
, и, похоже, он создает на лету дочерние переменные MongoCollection
(db_name
и new_db_name
соответственно), какнеобходимо.Как драйвер Mongo делает это?Как он узнает о создании объекта типа MongoCollection
, если открытая переменная не найдена?Драйвер является расширением PECL C;это необходимо для репликации этого поведения, или кто-то может сделать что-то подобное в PHP?