Ho un framework MVC homebrew che uso da un po 'e ha funzionato benissimo, ma sto programmando un upgrade ad esso per le sue classi ORM. Finora supporta solo i database SQL creando istruzioni dipendenti da quale funzione viene chiamata. La classe ORM include la struttura del campo e la convalida, i campi calcolati, gli indici e le classi unite (per associazioni, 1-1
, 1-*
, *-1
e *-*
) e fornisce funzionalità sufficienti per selezionare qualsiasi dato e recuperare le righe associate nel database.
Ma vorrei estenderlo per supportare database XML, LDAP e NoSQL (ad esempio MongoDB). Le mie idee per implementare questo sarebbe modificare le funzioni all'interno della classe ORM per interagire con un driver personalizzato (per ogni tipo di database) in un formato comune. Sfortunatamente, non ho avuto abbastanza esperienza nell'usare questi altri formati abbastanza per progettare adeguatamente una classe di interfaccia che potrebbe essere utilizzata dall'ORM per qualsiasi tipo.
Quindi, ci sono driver di database universali che supportano tutti questi tipi di database, quindi posso imparare dall'esempio?
L'interfaccia corrente su cui sto lavorando è:
interface DBDriver {
function connect($host, $un, $pw, $persist = false);
function disconnect();
function selectDB($db);
function charset($charset);
function insert($table, $values);
function select($table, $fields, $joins, $where, $group, $having, $order, $limit);
function update($table, $where, $values, $where, $order, $limit);
function delete($table, $where, $order, $limit);
function transactionBegin();
function transactionCommit();
function transactionRollback();
}
Ma sono preoccupato che, sebbene questo fornisca abbastanza per la creazione di istruzioni SQL, potrebbe non essere sufficiente, o forse addirittura eccessivo per altri metodi come XML o NoSQL.