我现在应该使用哪种PHP mongodb驱动程序?

时间:2016-11-17 05:01:35

标签: php mongodb smarty

我一直生活在摇滚之下,因为我必须是唯一还在使用outdata驱动程序将PHP连接到mongodb的人

http://php.net/manual/en/mongo.installation.php 我知道当我访问该网址时收到此消息

  

不推荐使用此扩展程序。相反,MongoDB扩展应该是   使用

现在我知道我仍然可以使用它,而且大多数事情都会奏效,但要确保我们与官方司机和司机保持联系。

我需要一些建议,我不理解的事情或者我可能,无论哪种方式看起来像新驱动程序意味着我将不得不将第三方插件更好地称为库和框架

但是我宁愿不使用那里列出的那些,因为我似乎找不到smarty-tpl框架,而我的其他客户都使用

static::$_db = new MongoClient

我不知道我是否可以使用这样的东西?

明确问题 - 如果以上是

  1. 他们是smarty-tpl的插件连接到新的mongodb驱动程序吗?
  2. 他们是一个由Mongodb正式编码的推荐框架或库吗?
  3. 他们是新驱动程序的new MongoClient连接字符串,如果是这样,请指出它,因为我在mongodb文件中找不到它,它一直把我带到老mongo驱动程序。
  4. 进一步提出这个问题:

    假设我们选择上面列表中的选项3是正确的功能

    new MongoDB\Driver\Manager
    

    注意我一直使用new MongoClient并调用我使用的数据库

    $siteDB = SITEDB;
         return static::$_db->$siteDB;
    

    所以这很容易,但我猜测Manager不是数据库,或者只是说这是客户端。

    我希望不必改变太多,因为我在我的类中有一个处理数据库连接的函数

    public static function db()
        {
         if (!static::$_db) {
            static::$_db = new MongoClient("mongodb://".SITEDBUSERNAME.":".SITEDBPASS."@".SITEDBURL.":27017/".SITEDB);
         }
          $siteDB = SITEDB;
         return static::$_db->$siteDB;
        }
    

1 个答案:

答案 0 :(得分:4)

旧版和新版的两个主要区别是:

  • 扩展分为两部分,低级驱动程序用C语言编写,用户友好的界面用PHP构建;这样可以更轻松地进行维护和定制。
  • PHP库已根据现代实践重新排列,例如命名空间

除非你做了一些不寻常的事情或者真的讨厌默认的库,否则你不需要关心扩展和库之间的分离:只需安装两者,然后继续使用用户友好的功能之前。

manual page on using the PHP library包括以下示例:

<?php
require 'vendor/autoload.php'; // include Composer goodies

$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;

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

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

因此,唯一的变化就是查找MongoClient并替换为MongoDB\Client

我不清楚Smarty集成的意思(我通常不希望数据存储和模板引擎直接交互),但如果这是第三方插件,你可能会需要查找或编写将\放在正确位置等的更新版本。