我现在应该使用哪个 PHP mongodb driver?
Which PHP mongodb driver should I now be using?
我一直生活在岩石下什么的,因为我一定是唯一一个还在使用 outdata driver 将 PHP 连接到 mongodb[=21 的人=]
http://php.net/manual/en/mongo.installation.php
我知道当我访问 url
时会收到此消息
This extension is deprecated. Instead, the MongoDB extension should be
used.
现在我知道我仍然可以使用它,而且大部分功能都可以使用,但要确保我们使用官方 drivers 和最新的 drivers。
我需要一些建议,我不理解或者我不理解的东西,无论哪种方式,新的 driver 都意味着我将不得不安装一个 3rd 方插件,更好地称为 库和框架.
但是我不想使用那里列出的那些,因为我似乎找不到 smarty-tpl 框架,而我的其他客户都使用
static::$_db = new MongoClient
不知道这样的东西还能不能用?
明确的问题 - 如果上面是地方
- 他们的插件是 smarty-tpl 连接到新的 mongodb driver 吗?
- 他们是Mongodb官方推荐的框架或库吗?
- 他们是新 driver 的
new MongoClient
连接字符串吗,如果是,请指出,因为我在 mongodb 文档中找不到它,它一直带我到旧 mongo driver.
进一步探讨这个问题:
假设我们使用上面列表中的选项 3 现在是正确的函数
new MongoDB\Driver\Manager
注意我一直使用 new MongoClient
并调用我使用的数据库
$siteDB = SITEDB;
return static::$_db->$siteDB;
所以这很简单,但我猜测 Manager 不是数据库,或者它只是一个很长的说法,这是客户端。
我不想做太多改动,因为我的 class 中有一个函数可以处理数据库连接
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 库已根据现代实践进行了一些重新排列,例如命名空间
除非你在做一些不寻常的事情或者真的讨厌默认库,否则你不需要关心扩展和库之间的分离:只需安装两者,然后像以前一样继续使用用户友好的功能。
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 集成是什么意思(我通常不希望数据存储和模板引擎直接交互),但如果那是第三方插件,你可能需要寻找或编写一个更新版本,将 \
放在正确的位置等
我一直生活在岩石下什么的,因为我一定是唯一一个还在使用 outdata driver 将 PHP 连接到 mongodb[=21 的人=]
http://php.net/manual/en/mongo.installation.php 我知道当我访问 url
时会收到此消息This extension is deprecated. Instead, the MongoDB extension should be used.
现在我知道我仍然可以使用它,而且大部分功能都可以使用,但要确保我们使用官方 drivers 和最新的 drivers。
我需要一些建议,我不理解或者我不理解的东西,无论哪种方式,新的 driver 都意味着我将不得不安装一个 3rd 方插件,更好地称为 库和框架.
但是我不想使用那里列出的那些,因为我似乎找不到 smarty-tpl 框架,而我的其他客户都使用
static::$_db = new MongoClient
不知道这样的东西还能不能用?
明确的问题 - 如果上面是地方
- 他们的插件是 smarty-tpl 连接到新的 mongodb driver 吗?
- 他们是Mongodb官方推荐的框架或库吗?
- 他们是新 driver 的
new MongoClient
连接字符串吗,如果是,请指出,因为我在 mongodb 文档中找不到它,它一直带我到旧 mongo driver.
进一步探讨这个问题:
假设我们使用上面列表中的选项 3 现在是正确的函数
new MongoDB\Driver\Manager
注意我一直使用 new MongoClient
并调用我使用的数据库
$siteDB = SITEDB;
return static::$_db->$siteDB;
所以这很简单,但我猜测 Manager 不是数据库,或者它只是一个很长的说法,这是客户端。
我不想做太多改动,因为我的 class 中有一个函数可以处理数据库连接
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 库已根据现代实践进行了一些重新排列,例如命名空间
除非你在做一些不寻常的事情或者真的讨厌默认库,否则你不需要关心扩展和库之间的分离:只需安装两者,然后像以前一样继续使用用户友好的功能。
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 集成是什么意思(我通常不希望数据存储和模板引擎直接交互),但如果那是第三方插件,你可能需要寻找或编写一个更新版本,将 \
放在正确的位置等