PDO - PHP Data Object

OK, la connessione tra PHP e MySql é efficace, sperimentata, ben nota a tutti.

Però non é mai una buona idea legarsi ad un solo database. Anche se oggi scriviamo un pezzo di codice PHP che sappiamo fa riferimento a un database MySql, mica é detto che questo valga anche domani. E doversi riscrivere tutto il codice che gestisce l'interfacciamento al database sarebbe una bella seccatura.

E' per questo che esistono un gran numero di soluzioni che contribuiscono a mantenere indipendente il codice dal database utilizzato. Un esempio per tutti: JDBC, la soluzione standard java al problema.

La soluzione standard PHP, dalla versione 5, si chiama PDO, PHP Data Object.

Per default non é attiva, e quindi la prima cosa che dobbiamo fare, se vogliamo usare PDO, é cambiare php.ini, fortunatamente in un modo molto semplice: normalmente basta decommentare un paio di righe, una per le funzionalità generiche del PDO e una per l'estensione relativa al database che intendo utilizzare.

Nel nostro caso (il server corre su windows, vogliamo usare MySql) dobbiamo accertarci che queste due righe siano presenti (e senza un punto e virgola come primo carattere) nel nostro file di inizializzazione:
extension=php_pdo.dll
extension=php_pdo_mysql.dll
Dopodichè basta ristartare il server Apache per avere a disposizione le nostre funzionalità aggiuntive.

Ora, nel file in cui vogliamo accedere al database, dobbiamo crearci un oggetto PDO. E' possibile far ciò in un gran numero di modi, ad esempio posso passare i parametri di inizializzazione al costruttore, una cosa di questo tipo:
$dbh = new PDO("mysql:host=localhost;dbname=test", "user", "password");
Essendo PDO un oggetto, ci comunica se qualcosa non va lanciando un eccezione. Sommando questo al fatto che vogliamo spostare la funzionalità di connessione in un altro file, in modo che sia visibile da tutte le pagine che vogliamo abbiano accesso al database senza stare a riscrivere i parametri di connessione in giro per il nostro progetto, giungiamo alla conclusione di scrivere una funzione, che chiameremo dbo_connect().
Non richiede parametri in input, ritorna l'handle al database in caso di successo, o false se qualcosa va storto.
Nota come l'eccezione (per la precisione, una PDOException) generata dal costruttore in caso di errore venga gestita localmente, segnalando all'utente l'errore.
function dbo_connect()
{
try
{
return new PDO("mysql:host=localhost;dbname=test", "user", "password");
}
catch(PDOException $e)
{
echo "Exception connecting to database: ", $e->getMessage(), "<br />";
return false;
}
}
A questo punto, una semplice paginetta web che non fa null'altro che tentare di connettersi al database e visualizzare un messaggio di successo se tutto va bene, avrà il seguente codice PHP:
if(($dbh = dbo_connect()) == false)
die();
echo "PDO connection succeeded.";
Per vedere in azione il codice sopra descritto, basta andare qui.

Nessun commento:

Posta un commento