Una prima buona classe PHP per il vostro Database

Ed eccoci qua! Il primo post a tema.

Stavo pensando che, giustamente, il primo articolo dovesse riguardare qualcosa di utile, di molto utile. Forse non è proprio l’ultimo appunto che ho preso, ma fu una delle prime classi che ho iniziato ad utilizzare e tutt’oggi è l’unica classe che trascino in ogni mio progetto. Forse non sarà la super classe, ma la trovo un ottimo inizio!

Si parla della PHP Advanced Database Class sviluppata da Sébastien Laoût.
Io l’ho trovata un’ottima classe di partenza su cui ho poi inserito qualche metodo che mi sarebbe tornato utile.

L’utilizzo è molto semplice (altrimenti perché saremmo dovuti ricorrere ad una classe?)
Requisiti: PHP5 o superiori, supporto OOP (Object Oriented Programming)

Iniziamo con l’includere la classe nel nostro file e nel creare l’istanza della classe

include 'db.class.php';
$db = new DB($database, $host, $user, $pass);

Come si può notare il costruttore della classe DB (ovvero la funzione/metodo che viene richiamato al momento dell’inizializzazione dell’oggetto) richiede i dati del database per l’accesso. Questa cosa l’ho trovata particolarmente scomoda, specie quando si lavora con host a IP. Principalmente per questo motivo ho trovato più comodo modificare il sorgente della classe per includere automaticamente le credenziali d’accesso. Ma ognuno ha il suo metodo ;)

Passiamo subito alle nostre query di ricerca. Per tutte le query che devono restituire dei record (principalmente tutte le SELECT) useremo il metodo query ().
Per poter utilizzare tutti i record restituiti, basterà impostare il while come sotto e questo verrà iterato per tutti i record restituiti. Si faccia attenzione che quindi l’oggetto $persona ad ogni ciclo cambierà i valori dei suoi parametri interni.

$result = $db->query("SELECT * FROM Persone");

//eseguiamo tante iterazioni quanti sono i record della query
while ($persona = $db->fetchNextObject($result)) {
  echo "Ciao ".$persona->nome."\n";
}

Se ci troviamo invece davanti ad una query che non deve restituire risultati, allora ci affideremo al metodo execute () come sotto indicato

//Principalmente per le query di INSERT, UPDATE, DELETE, and so on
$db->execute("UPDATE Persone SET nome='Matteo'");

Viste le funzioni base, passiamo a qualcosa di veramente utile.
Avete presente quando, pur richiamando un solo record, dovevate prima eseguire la query, poi fargli un fetch_array, ad esempio, per utilizzarlo? Oppure un solo campo? Risolto il problema

//Ecco il nostro oggetto
$persona = $db->queryUniqueObject("SELECT * FROM Persone WHERE id=2");

//Ecco il nostro campo
$anni = $db->queryUniqueValue("SELECT anni FROM Persone WHERE id=2");

Procediamo verso la fine della panoramica di questa classe con due paia di metodi rapidi ed efficienti

 //Ricerca di un massimo valore con condizione
$max = $db->maxOf("anni", "Persone", "citta='Roma'");

//Ricerca del massimo valore assoluto
$max = $db->maxOfAll("anni", "Persone");

//Conteggio del numero di record che rispettano la condizione
$romani = $db->countOf("Persone", "citta='Roma'");

//Semplicemente il conteggio totale
$italiani = $db->countOfAll("Persone");

Vi sono altri metodi che vi lascerò scoprire da soli, e un ben visivo rapporto di debug, attivabile passando un valore true dopo i metodi di query(), execute() e alcuni altri

$result = $db->query("SELECT * FROM Persone",true);
$db->execute("UPDATE Persone SET nome='Matteo'", true);
$persona = $db->queryUniqueObject("SELECT * FROM Persone WHERE id=2",true);

A questo punto, non mi resta che rimandarvi i link del creatore di questa classe, sperando che vi possa essere utile nei vostri progetti. Nella pagina principale della classe troverete le Docs e tutti gli esempi.

Bye!


La classe è scaricabile da QUI
La pagina principale di questa classe la potete trovare QUI
La pagina principale del sito di Sébastien Laoût la trovate QUI Favicon Laout



Ti è piaciuto l'articolo? Vota Ok oppure No. Grazie Mille!

Post Correlati:

Resta aggiornato abbonandoti al feed RSS 2.0. Puoi lasciare un commento oppure inviare un trackback dal tuo sito.

3 Commenti »

 
 

Lascia un Commento

XHTML: È possibile utilizzare questi marcatori: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>