0

私は後でCRUD関数を追加したいmongoクラスを持っていますが、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;
    }

index.php

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

1 に答える 1

1

問題のある行は次のように記述する必要があると思います。

$collection = new MongoCollection($myMongo->dbLink, 'user');

クラスコンストラクターがメソッドMongoによって返される値を返すことを期待しているようです。connectしかし、それは正しくありません: コンストラクターはオブジェクト全体を返します (そのプロパティは、実行時に定義される場合と定義されない場合があります)。

dbLinkプロパティを直接公開するべきではなく、代わりにゲッター メソッドを使用する必要があると言う人もいるかもしれません。

private $dbLink;
...
public function getDb() {
  return $this->dbLink;
}
...
$collection = new MongoCollection($myMongo->getDb(), 'user');

私は、あなたのクラスがMongo自体と密結合しているように見えるので、これはこの場合必要ではないと思います(これは、私が最初に修正する必要があるものです)。

于 2012-09-20T13:38:19.907 に答える