0

我有一个 mongo 类,稍后我想在其中添加 CRUD 函数,但是到目前为止,我想在创建 Mongo 的对象后编写自己的集合函数,所以每当我想使用 mongodb 时,我只需创建我的类的对象, 并编写命令

但它给了我这个错误:

引发异常:错误 (2):“MongoCollection::__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;
    }

索引.php

       $myMongo = new Mongo(); 
       $collection = new MongoCollection($myMongo,'user');
4

1 回答 1

1

我想有问题的行应该这样写:

$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 本身紧密耦合(对我来说,这是应该首先解决的问题)。

于 2012-09-20T13:38:19.907 回答