вернуть объект mongo php для mongocollection

У меня есть класс 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:[email protected]); 
                $this->dbLink = $this->conn->selectDB('profiles');
                return $this->dbLink;
    }

index.php

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

person meWantToLearn    schedule 20.09.2012    source источник


Ответы (1)


Я предполагаю, что проблемная строка должна быть написана так:

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

Кажется, вы ожидаете, что конструктор класса Mongo вернет значение, возвращаемое методом connect. Но это просто неверно: конструктор возвращает весь объект (какие свойства могут быть, а могут и не быть определены во время его выполнения).

Кто-то может сказать, что свойство dbLink не следует выставлять напрямую, а вместо этого следует использовать метод получения:

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

Я не думаю, что в данном случае это необходимо, так как ваш класс кажется тесно связанным с самим Монго (что, по моему мнению, должно быть исправлено в первую очередь).

person raina77ow    schedule 20.09.2012
comment
Спасибо за отзыв, но мой класс предназначен только для Mongo. Так что я думаю, что тесная связь не имеет значения. - person meWantToLearn; 20.09.2012