我一直生活在岩石或什么东西下,因为我必须是唯一一个仍然使用outdata驱动程序连接PHP到mongodb的人
http://php.net/manual/en/mongo.installation.php我知道当我访问url
时会得到这个消息此扩展已弃用。相反,MongoDB扩展应该是使用。
现在我知道我仍然可以使用它,并且大多数东西都可以工作,但是要确保我们使用官方驱动程序和最新的驱动程序。
我需要一些建议,我不理解的事情,或者也许我是,无论哪种方式,似乎新的驱动程序意味着我将不得不实现一个第三方插件,更好地知道库和框架。
然而,我宁愿不使用上面列出的那些,因为我似乎找不到一个smart -tpl框架,我的其他客户都使用
static::$_db = new MongoClient
我不知道我是否还能使用这样的东西?
明确的问题-如果上面是超过的地方
- 他们是smart -tpl连接到新的mongodb驱动程序的插件吗?
- 是Mongodb官方编码的推荐框架或库吗?
- 是他们的
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集成是什么意思(我通常不会期望数据存储和模板引擎直接交互),但如果这是一个第三方插件,你可能需要寻找或编写一个更新版本,将'
放在正确的位置等