Anno nuovo, vita nuova.
Anche per i “vecchi” programmatori PHP, talmente tanto affezionati al mysql_connect e al mysql_query da non essersi nemmeno accorti che il modo di programmare stava progressivamente cambiando.
Le nuove versioni di PHP (dalla 5.3, ma sarà sempre più in uso nelle successive minor) implementano il cosiddetto PDO (PHP Database Object), un nuovo modo, più sicuro e veloce, per gestire le connessioni alle basi di dati.
Ovviamente, questa rivoluzione (che tale è, per chi come me conosceva a memoria la procedura classica, ormai caduta nel limbo dei “deprecati”) comporta una variazione del modo di programmare e mira ulteriormente a spostare la modalità di approccio allo script verso il paradigma OO.

Ma come funziona PDO?
Bene, se usate Windows e le ultime versioni di EasyPHP, sapete già che non avete scelta: dovete usarlo e basta, in quanto il vecchio standard è passato in disuso direttamente tramite le direttive del php.ini.
PDO è una libreria di metodi implementati direttamente in PHP. Il suo vantaggio è la possibilità di rendere il codice del tutto indipendente dalla base dati utilizzata (basterà semplicemete sostituire una stringa e lo script sarà perfettamente utilizzabile per tutti i più diffusi database. Vediamo come.

Oggi descriviamo la connessione.
Piccola premessa: essendo un convinto assertore del OOP, sono solito inserire la connessione al db nel __construct della classe che implementa i medoti di comunicazione al database. Il vantaggio, secondo me, è chiaro: istanziando l’oggetto non devo preoccuparmi di richiamare la connessione e alla chiusura della pagina la connessione sarà chiusa dalla distruzione dell’oggetto.
Veniamo alla connessione:

$col = “mysql:host=127.0.0.1;dbname=mio_database”;
try {
self::$db = new PDO($col , ‘root’, ”);
}
catch(PDOException $e) {
echo ‘Attenzione: ‘.$e->getMessage();
}

La logica non cambia molto rispetto al vecchio sistema e non sarà il caso di soffermarsi sulla sintassi nello specifico. Meglio parlare invece dei vantaggi alla portabilità che comporta questo passaggio.
Immaginiamo di avere un grosso gestionale e di averlo su MySQL. Tutti gli script fanno uso di mysql_query, mysql_num_rows, etc. Immaginiamo pure – sì, immaginiamolo con terrore – che l’azienda per cui lavorate decida per vari motivi di passare tutto a PostgreeSQL. La quantità di modifiche negli script – procedurali o ad oggetti che siano – sarà gigantesca: un enorme dispendio di tempo e risorse.
Torniamo alla nostra connessione con PDO. In questo caso la portabilità è garantita dal fatto che l’unico passaggio di riconoscimento del DB è dato dalla stringa di connessione $col: se l’azienda decidesse di migrare da MySQL a Postgree, ad esempio, sarebbe sufficiente modificare il richiamo al DB nella stringa da mysql a pgsql. Tutti gli script sarebbero automaticamente riconvertiti. Un vantaggio eccezionale!

Nei prossimi articoli ci occuperemo della gestione delle query e toccheremo con mano la potenza e la semplicità del nuovo approccio.