Utiliser la bibliothèque PHP pour MongoDB (PHPLIB)

Après la configuration initiale de l'extension, nous allons continuer à expliquer comment démarrer avec la bibliothèque utilisateur correspondante pour écrire notre premier projet.

Installer la bibliothèque PHP avec Composer

La dernière chose que nous devons installer pour commencer l'application elle-même est la bibliothèque PHP.

La bibliothèque doit être installée avec » Composer, un gestionnaire de paquets pour PHP. Les instructions pour installer Composer sur différentes plateformes peuvent être trouvées sur son site web.

Installer la bibliothèque en exécutant:

$ composer require mongodb/mongodb

Cela produira une sortie similaire à:

./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 va créer plusieurs fichiers: composer.json, composer.lock, et un répertoire vendor qui contiendra la bibliothèque et toutes les autres dépendances que votre projet pourrait nécessiter.

Utiliser la bibliothèque PHP

En plus de gérer vos dépendances, Composer vous fournira également un autochargement (pour les classes de ces dépendances). Assurez-vous qu'il est inclus au début de votre script ou dans le code d'amorçage de votre application:

<?php
// Ce chemin doit pointer vers l'autochargeur de Composer
require 'vendor/autoload.php';

Avec cela fait, vous pouvez maintenant utiliser n'importe quelle fonctionnalité comme décrit dans la » documentation de la bibliothèque.

Si vous avez utilisé des pilotes MongoDB dans d'autres langages, l'API de la bibliothèque devrait vous sembler familière. Elle contient une classe » Client pour se connecter à MongoDB, une classe » Database pour les opérations au niveau de la base de données (par exemple, les commandes, la gestion des collections), et une classe » Collection pour les opérations au niveau de la collection (par exemple, les méthodes » CRUD, la gestion des index).

En tant qu'exemple, voici comment vous insérez un document dans la collection beers de la base de données demo:

<?php
require 'vendor/autoload.php'; // inclure l'autochargeur de Composer

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

Depuis le document inséré ne contenait pas de champ _id, l'extension va générer un MongoDB\BSON\ObjectId pour que le serveur l'utilise comme _id. Cette valeur est également disponible pour l'appelant via l'objet de résultat retourné par la méthode insertOne.

Après l'insertion, vous pouvez interroger les données que vous venez d'insérer. Pour cela, vous utilisez la méthode find, qui retourne un curseur itérable:

<?php
require 'vendor/autoload.php'; // inclure l'autochargeur de Composer

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

Tandis que les exemples ne le montrent pas, les documents BSON et les tableaux sont désérialisés en tant que classes spéciales dans la bibliothèque par défaut. Ces classes étendent ArrayObject pour la facilité d'utilisation et implémentent les interfaces MongoDB\BSON\Serializable et MongoDB\BSON\Unserializable de l'extension pour garantir que les valeurs conservent leur type lorsqu'elles sont sérialisées de nouveau en BSON. Cela évite un inconvénient de l'ancienne extension mongo où les tableaux pourraient se transformer en documents, et vice versa. Voir la spécification Persister des données pour plus d'informations sur la façon dont les valeurs sont converties entre PHP et BSON.