没有composer的drupal 7模块中的Mongo db客户端库

时间:2016-10-18 09:00:48

标签: php mongodb drupal drupal-7 autoload

我正在尝试使用客户端库https://github.com/mongodb/mongo-php-library/blob/master/docs/tutorial/install-php-library.txt从drupal连接到mongo。 我下载了源代码。现在我想在.module文件中使用它

模块内的

myModule目录结构 -

- / MongoDB(库的src文件夹)

- myModule.module

- myModule.info

内部myModule.module文件 -

     function my_autoloader($class) {
          print_r($class);
          include DRUPAL_ROOT.'/sites/all/modules/myModule/MongoDB/' . $class . '.php';
        }

        spl_autoload_register('my_autoloader');

    function myModule_init() {

    //sample code to connect to mongo
      $client = new MongoDB\Client("mongodb://xx.xx.xx.xx:27017");

      $collection = $client->demo->beers;

      $result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );

      echo "Inserted with Object ID '{$result->getInsertedId()}'";
}

我收到错误

Fatal error: Class 'MongoDB\Client' not found

我做错了什么。任何想法???

注意:我尝试使用此

时能够连接
  $m = new MongoDB\Driver\Manager("mongodb://xx.xxx.xx.xx:27017");

  echo "Connection to database successfully"; 

但为什么不使用客户端???

1 个答案:

答案 0 :(得分:0)

问题是print_r($class);正在提供类似MongoDB\Client\的输出(名称空间格式), 然后我不得不用/使用

替换\

$class = str_replace('\\', '/', $class);

并从网址中删除MongoDB 仍然不知道它给出MongoDB\Client\

的原因