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_name
和new_db_name
)根据需要在飞行中。 Mongo司机是如何做到这一点的?如果找不到公共变量,如何创建类型为MongoCollection
的对象?驱动程序是PECL C扩展;是复制这种行为所必需的,还是有人可以在PHP中做类似的事情?
答案 0 :(得分:2)
您可以使用这样的类来实现相同的目标:
class mongolike {
protected $dbs;
function __get($name) {
if (empty($this->dbs[$name])) {
$this->dbs[$name] = new db($name);
}
return $this->dbs[$name]
}
}