PHP8 使用 MongoDB 的 PHP 庫(kù)

2024-04-08 10:15 更新

在初始驅(qū)動(dòng)程序設(shè)置之后,我們將繼續(xù)解釋如何獲得 從MongoDB驅(qū)動(dòng)和對(duì)應(yīng)的用戶空間庫(kù)開(kāi)始編寫 我們的第一個(gè)項(xiàng)目。

使用 Composer 安裝 PHP 庫(kù)

我們?nèi)匀恍枰惭b的最后一件事才能開(kāi)始使用應(yīng)用程序 本身,就是PHP庫(kù)。

該庫(kù)需要使用 ? Composer(包管理器)進(jìn)行安裝 對(duì)于PHP。在各種平臺(tái)上安裝 Composer 的說(shuō)明可能是 在其網(wǎng)站上找到。

通過(guò)運(yùn)行以下命令安裝庫(kù):

$ composer require mongodb/mongodb

它將輸出類似于以下內(nèi)容的內(nèi)容:

./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing mongodb/mongodb (1.0.0)
    Downloading: 100%         

Writing lock file
Generating autoload files

Composer 將創(chuàng)建多個(gè)文件:、 和一個(gè)目錄,該目錄將 包含庫(kù)和項(xiàng)目可能需要的任何其他依賴項(xiàng)。composer.jsoncomposer.lockvendor

使用 PHP 庫(kù)

除了管理您的依賴項(xiàng)外,Composer 還將為您提供 使用自動(dòng)加載器(用于這些依賴項(xiàng)的類)。確保它是 包含在腳本開(kāi)頭或應(yīng)用程序的引導(dǎo)程序中 法典:

<?php
// This path should point to Composer's autoloader
require 'vendor/autoload.php';

完成此操作后,您現(xiàn)在可以使用 ? 庫(kù)文檔中描述的任何功能。

如果您使用過(guò)其他語(yǔ)言的 MongoDB 驅(qū)動(dòng)程序,則庫(kù)的 API 應(yīng)該看起來(lái)很熟悉。它包含一個(gè)用于連接到 MongoDB 的 客戶端類,一個(gè)用于數(shù)據(jù)庫(kù)級(jí)操作(例如命令、集合管理)的 ? 數(shù)據(jù)庫(kù)類, 以及用于集合級(jí)操作的  集合類(例如  CRUD 方法、索引管理)。

例如,以下是將文檔插入演示數(shù)據(jù)庫(kù)的 beers 集合的方法:

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

$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()}'";
?>

由于插入的文檔不包含字段,因此 驅(qū)動(dòng)程序?qū)?nbsp;服務(wù)器用作 .此值也可用于 調(diào)用方通過(guò)方法返回的結(jié)果對(duì)象。_id_idinsertOne

插入后,您可以查詢剛剛插入的數(shù)據(jù)。 為此,您可以使用返回可迭代對(duì)象的方法 光標(biāo):find

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

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

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

foreach ($result as $entry) {
    echo $entry['_id'], ': ', $entry['name'], "\n";
}
?>

雖然在示例中可能并不明顯,但 BSON 文檔和數(shù)組是 默認(rèn)情況下,在庫(kù)中未序列化為類型類。這些類確保 該值在序列化回 BSON 時(shí)保留其類型,這 避免了舊驅(qū)動(dòng)程序中的警告,即數(shù)組可能會(huì)變成文檔, 反之亦然。此外,這些類型類擴(kuò)展了 ArrayObject 以增強(qiáng)可用性。您可以找到更多 有關(guān)如何在 PHP 變量之間進(jìn)行序列化和反序列化的信息 BSON 由驅(qū)動(dòng)程序和庫(kù)通過(guò)讀取持久數(shù)據(jù)規(guī)范進(jìn)行處理。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)