Domanda

Ho un livello di accesso ai dati che ha classi separate per ogni tabella nel database. Ogni classe rende oggetti che fanno riferimento una riga nella tabella, hanno creare, aggiornare, eliminare e recuperare funzioni. Tutti estendere una classe DBObj. La mia domanda è, dire che voglio scrivere una query per SELECT * FROM table, e che hanno in una funzione. Dove è il posto migliore per mettere questo? Nello strato di affari o di gruppo tutte le funzioni relative nelle loro rispettive classi di livello di dati? La sua in PHP se quello che conta, utilizzando MySQL.

È stato utile?

Soluzione

Mettere query SQL nel livello dati.

Per una query come SELECT * FROM table, se si effettua che un metodo di classe del modello stesso, o un metodo di un oggetto Model Manager, è una questione di stile.

Ma la logica di business dovrebbe essere estratta dai dettagli arbitrarie dello schema del database. Il livello di business dovrebbe essere in grado di chiedere solo lo strato di dati per tutte le istanze di un modello, senza curarsi la query specifica che sta per essere usato per ottenere che i dati.

Altri suggerimenti

ho appena trovato la tua domanda, e ho pensato di portare un altro punto di vista. Si dovrebbe sulla maggior parte delle applicazioni (non dico tutti, ma è vicino ad esso) a costruire un livello di astrazione dei dati, la maggior parte delle volte definito come un quadro ORM.

Attenzione però, il Data Access Layer (DAL) non deve essere confuso con voi strato di dominio o di livello Business Logic, a seconda del vostro approccio architetturale. Se si desidera ottenere più profondo in questo argomento, credo che ogni sviluppatore dovrebbe, è possibile cercare per articoli di Martin Fowler , inoltre è possibile leggere questo blog post che ho fatto qualche tempo fa, non è così importante come M. Fowler, ma ho fatto alcune riflessioni in materia.

Con i migliori saluti, David

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top