Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为mongocollection返回一个mongo对象php_Php_Mongodb_Mongoid_Mongo Collection - Fatal编程技术网

为mongocollection返回一个mongo对象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

我有一个mongo类,稍后我想在其中添加CRUD函数,但现在我想在创建mongo的object之后编写自己的集合函数,所以每当我想使用mongodb时,我只需要创建我的类的object,并编写命令

但它给了我一个错误:

引发异常:错误(2):“MongoCollection::\uu construct()要求参数1为MongoDB,对象为给定的

我怎么能把它当成MongoDB

mongo.class.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');
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。因此我认为紧密耦合没有问题。