我如何复制MongoDB API范例?

时间:2011-11-13 03:12:25

标签: php oop mongodb

MongoDB's excellent PHP driver允许我编写编写如下代码的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_namenew_db_name )根据需要在飞行中。 Mongo司机是如何做到这一点的?如果找不到公共变量,如何创建类型为MongoCollection的对象?驱动程序是PECL C扩展;是复制这种行为所必需的,还是有人可以在PHP中做类似的事情?

1 个答案:

答案 0 :(得分:2)

您可以使用这样的类来实现相同的目标:

class mongolike {
  protected $dbs;
  function __get($name) {
    if (empty($this->dbs[$name])) {
      $this->dbs[$name] = new db($name);
    }
    return $this->dbs[$name]
  }
}