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


Which PHP mongodb driver should I now be using?

我一直生活在岩石或什么东西下,因为我必须是唯一一个仍然使用outdata驱动程序连接PHP到mongodb的人

http://php.net/manual/en/mongo.installation.php我知道当我访问url

时会得到这个消息

此扩展已弃用。相反,MongoDB扩展应该是使用。

现在我知道我仍然可以使用它,并且大多数东西都可以工作,但是要确保我们使用官方驱动程序和最新的驱动程序。

我需要一些建议,我不理解的事情,或者也许我是,无论哪种方式,似乎新的驱动程序意味着我将不得不实现一个第三方插件,更好地知道库和框架

然而,我宁愿不使用上面列出的那些,因为我似乎找不到一个smart -tpl框架,我的其他客户都使用

static::$_db = new MongoClient

我不知道我是否还能使用这样的东西?

明确的问题-如果上面是超过的地方

  1. 他们是smart -tpl连接到新的mongodb驱动程序的插件吗?
  2. 是Mongodb官方编码的推荐框架或库吗?
  3. 是他们的new MongoClient连接字符串的新驱动程序,如果是这样,请指出它,因为我找不到mongodb文件,它一直带我到旧的mongo驱动程序。

进一步说明这个问题:

假设我们选择上面列表中的选项3现在是正确的函数

new MongoDB'Driver'Manager

注意我一直使用new MongoClient,调用db时我使用

$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;
    }

新旧扩展的两个主要区别是:

  • 扩展被分成两个部分,底层驱动程序用C编写,用户友好界面用PHP构建;这使得更容易维护和可定制性
  • PHP库已经根据现代实践重新安排了一些,例如命名空间

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

使用PHP库的手册页包括这个例子:

<?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集成是什么意思(我通常不会期望数据存储和模板引擎直接交互),但如果这是一个第三方插件,你可能需要寻找或编写一个更新版本,将'放在正确的位置等