为mongocollection返回一个mongo对象php
我有一个mongo类,稍后我想在其中添加CRUD函数,但现在我想在创建mongo的object之后编写自己的集合函数,所以每当我想使用mongodb时,我只需要创建我的类的object,并编写命令 但它给了我一个错误: 引发异常:错误(2):“MongoCollection::\uu construct()要求参数1为MongoDB,对象为给定的 我怎么能把它当成MongoDB mongo.class.php为mongocollection返回一个mongo对象php,php,mongodb,mongoid,mongo-collection,Php,Mongodb,Mongoid,Mongo Collection,我有一个mongo类,稍后我想在其中添加CRUD函数,但现在我想在创建mongo的object之后编写自己的集合函数,所以每当我想使用mongodb时,我只需要创建我的类的object,并编写命令 但它给了我一个错误: 引发异常:错误(2):“MongoCollection::\uu construct()要求参数1为MongoDB,对象为给定的 我怎么能把它当成MongoDB mongo.class.php class Mongo { public function
class Mongo
{
public function __construct(){
$this->connect();
}
public function connect{
$this->conn = new \Mongo("mongodb://admin:123456@192.168.2.3);
$this->dbLink = $this->conn->selectDB('profiles');
return $this->dbLink;
}
$myMongo = new Mongo();
$collection = new MongoCollection($myMongo,'user');
index.php
class Mongo
{
public function __construct(){
$this->connect();
}
public function connect{
$this->conn = new \Mongo("mongodb://admin:123456@192.168.2.3);
$this->dbLink = $this->conn->selectDB('profiles');
return $this->dbLink;
}
$myMongo = new Mongo();
$collection = new MongoCollection($myMongo,'user');
我想有问题的一行应该这样写:
$collection = new MongoCollection($myMongo->dbLink, 'user');
您似乎期望Mongo
类构造函数将返回connect
方法返回的值。但事实并非如此:构造函数返回整个对象(在执行时可能会定义,也可能不会定义这些属性)
有些人可能会说不应该直接公开dbLink
属性,而应该使用getter方法:
private $dbLink;
...
public function getDb() {
return $this->dbLink;
}
...
$collection = new MongoCollection($myMongo->getDb(), 'user');
我,我不认为这在这种情况下是必要的,因为您的类似乎与Mongo本身紧密耦合(我认为,这是应该首先修复的)。感谢您的反馈,但我的类只用于Mongo。因此我认为紧密耦合没有问题。