2016-11-17 93 views
1

我一直生活在岩石或東西下,因爲我一定是誰仍在使用outdata驅動程序用於PHP連接到MongoDB的我應該使用哪個PHP mongodb驅動程序?

http://php.net/manual/en/mongo.installation.php 我知道當我訪問該網址

得到這個消息的唯一一個

此擴展已棄用。相反,MongoDB擴展應該使用 。

現在我知道我仍然可以使用它,而且大部分的東西都可以使用,但是要確保我們留在官方司機和駕駛員駕駛中。

我需要一些建議,我不理解或可能是我的東西,這似乎是新的驅動程序意味着我將不得不imploment第三方插件更好的知道的庫和框架兩種方式。

不過我寧可不使用網頁上列出的那些,因爲我似乎無法找到一個智者-TPL框架,以及我的其他客戶端的所有使用使用

static::$_db = new MongoClient 

我不知道我還可以使用這樣的東西嗎?

明確的問題 - 如果上面是過的地方

  1. 是他們的智者-TPL插件連接到新的MongoDB的驅動程序?
  2. 他們是一個由Mongodb正式編碼的推薦框架或庫嗎?
  3. 是他們的一個new MongoClient連接字符串爲新的驅動程序,如果是這樣請指出,因爲我無法找到它在mongodb文件,它不停地帶我去老芒戈驅動程序。

深化了這個問題:

比方說,我們一起去選3在上面的列表中正確的函數現在

new MongoDB\Driver\Manager 

注意到我一直用new MongoClient,並呼籲我使用DB

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

所以這很容易,但我會猜測經理不是數據庫或者它只是一個非常長的路說這是客戶。

我想沒有改變太多,因爲我有我的類中的功能,處理數據庫連接

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

回答

3

舊的擴展和新之間的兩個主要區別是:

  • 該擴展已被拆分爲兩個,用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()}'"; 

所以,唯一的變化將是東西像發現MongoClientMongoDB\Client取代。

我不清楚你的意思是什麼Smarty整合(我通常不希望數據存儲和模板引擎直接交互),但如果這是第三方插件,你可能需要尋找或寫一個更新的版本,把\放在正確的地方等

+0

我注意到,這不會連接到一個altas集羣。 但你的回答是正確的 – RussellHarrower

相關問題