【问题标题】:Mongo db client library in drupal 7 module without composer没有作曲家的drupal 7模块中的Mongo db客户端库
【发布时间】:2016-10-18 09:00:47
【问题描述】:

我正在尝试使用客户端库 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"; 

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

【问题讨论】:

  • 让它工作,必须添加 $class= str_replace('\\', '/', $class);并从路径中删除了 MongoDB
  • 那么请将您的问题标记为已解决。

标签: php mongodb drupal drupal-7 autoload


【解决方案1】:

问题是print_r($class); 给出的输出类似于MongoDB\Client\(以名称空间格式), 然后我所要做的就是用 / 替换 \

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

并从 url 中删除 MongoDB。
还是不知道为什么给MongoDB\Client\

【讨论】:

    猜你喜欢
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    相关资源
    最近更新 更多