PHP e MongoDB, impostare l'ambiente di lavoro

MongoDB è tipo database classificato come NoSql, in particolare è non relazionale e orientato ai documenti.

Pubblicato da ,
Ultima modifica

In questo articolo vedremo come iniziare per progettare un'applicazione PHP avente come base di dati MongoDB, in particolare supponiamo di avere già installato XAMPP come piattaforma software costituita da Apache HTTP Server, e di avere Windows come SO sulla nostra macchina di sviluppo. 

Per poter usare il database MongoDB dobbiamo installare l'estensione PHP mongodb, prima però abbiamo bisogno di alcune informazioni reperibili tramite la funzione phpinfo(), pertanto creiamo un file info.php con il seguente codice e apriamolo nel nostro browser all'indirizzo 127.0.0..1/info.php

Codice PHP

<?php
   
phpinfo();

le informazioni di cui abbiamo bisogno sono la versione di PHP attualmente in uso, 'Architecture' e 'Thread Safety

 

phpinfo

 

a questo punto possiamo scaricare l'estensione mongodb al seguente link

pecl.php.net/package/mongodb

si aprirà una pagina con l'elenco delle versioni disponibili (Available Releases), in questo caso poichè la versione PHP è la 7.1 posso scaricare la versione 1.6.0 per SO Windows, il link è il seguente

pecl.php.net/package/mongodb/1.6.0/windows

scorriamo la pagina fino alla sezione DLL List e scarichiamo la versione

7.1 Thread Safe (TS) x86

poichè abbiamo un Architecture pari a x86 e Thread Safety pari a enabled

 

mongodb extension php

 

ultimato il download, estraiamo i file dalla cartella compressa e copiamo il file 

php_mongodb.dll

nella cartella delle estensioni di PHP, che nel nostro caso è 

C:\xampp\php\ext

Per completare l'installazione dell'estensione mongodb dobbiamo aggiungere al nostro file php.ini la seguente riga alla lista delle estensioni

extension=php_mongodb.dll

per verificare la corretta installazione riavviamo Apache e apriamo il file info.php creato in precedenza nel nostro browser e verifichiamo che ci sia la sezione mongodb.

Arrivati a questo punto, il passo successivo è scaricare e installare MongoDB Compass Community al seguente link

mongodb.com/download-center/community

visualizzeremo una pagina dove sceglliere la versione relativa al nostro SO e il Package ( MSI oppure ZIP ), nel nostro caso selezioniamo Windows x64 e scelgo un formato MSI.

Se l'installazione è andata a buon fine apriamo MongoDB Compass Community per generare una nuova connessione.

Nella schermata "New Connection" clicchiamo sul bottone "Favorite" per aggiungere ai favoriti la nuova connesisone

 

new connection mongodb

 

e poi scegliamo un nome

 

save connection to favorite

 

e salva, nelle sezione Favorite a sinistra della schermata ci sarà la connessione appena creata

 

local

 

cliccando su di essa visualizzeremo il link della connessione, che è simile a questo

 

url connection mongodb

 

e ci servirà per connetterci al database, in particolare cliccando sul bottone "CONNECT" visualizzeremo la lista dei database disponibili.

Per rendere più agevoli le operazioni di CRUD, ci sono diverse librerie PHP tra cui mongodb/mongo-php-library che è possibile scaricare al seguente link:

github.com/mongodb/mongo-php-library

oppure tramite il comando composer 

composer require "mongodb/mongodb=^1.0.0"

Un esempio di utilizzo di questa libreria

Codice PHP

<?php

require 'vendor/autoload.php';

use MongoDB\Client;

$client = new Client('mongodb://localhost:27017/..');

$collection = $client->demo->test;

$result = $collection->insertOne([
    'name'    => 'Michele De Falco',
    'title'   => 'Software Engineer',
    'website' => 'Il Blog di un Programmatore',
    'url'     => 'https://ilblogdiunprogrammatore.it',
    'twitter' => '_micheledefalco'
]);

printf("Inserted document with ID %s\n", $result->getInsertedId());

alla classe Client viene passato come parametro l'url che abbiamo generato in MongoDB Compass Community, creiamo un database di nome demo e una collection test ($client->demo->test), tramite la funzione insertOne inseriamo dei dati nella collection test utilizzando un array associativo.