Domanda

Al momento, ho una classe di accesso database denominato DB, che utilizza PDO. Ho poi una manciata di sottoclassi per l'accesso a ogni tabella:

  • Users
  • Images
  • Galleries
  • Text
  • Videos

Questo è stato bello quando ho iniziato il mio progetto, ma ora non sono sicuro se è così grande, come ho un metodo per ogni query di database che uso all'interno di ciascuna di queste classi. Ad esempio:

Images::insertNew($filename)
Images::getTotalInGallery($galleryId)
Images::getAllInGallery($galleryId, $fetchStyle)
Images::updateDescription($imageId, $description)
Images::updateGallery($imageId, $galleryId, $orderNum)
Images::getSingle($imageId)
Images::getFilename($imageId)
Images::getImageIdByFilename($filename)


Galleries::getNameById($galleryId)
Galleries::getAll()
Galleries::getMaxImages($galleryId)
Galleries::checkIfExists($galleryId)
Galleries::createNew($galleryName)
Galleries::getById($galleryId)
Galleries::delete($galleryId)

Beh, si ottiene l'idea. Sono stato l'aggiunta di questi metodi, come la necessità per loro si pone, e in fase di sviluppo, comincio semplicemente utilizzando la classe DB:

//Execute a query
DB::query($query);

//Get a single row
$row = DB::getSingleRow($query);

//Get multiple rows
$rows = DB::getMultipleRows($query);

Quindi, le query di prova io con la mia classe di DB, poi quando si sta lavorando, io li avvolgono in un metodo della classe che è legato ad esso (classe immagine per la tavola immagini, classe gallerie per la tavola gallerie, etc.).

Mi sento come questo si continuerà a crescere e crescere come aggiungo nuove funzioni in seguito (che può essere OK, ma non sono certo). Può qualcuno critica il mio metodo e / o fornire soluzioni alternative?

Grazie!

È stato utile?

Soluzione

No, questo in realtà suona piuttosto bene. Ti sembra di avere un solido strato di astrazione tra logica di business e di accesso ai dati (Questo è chiamato Data Mapper modello ).

L'unico problema di questo grande ottenere è che si potrebbe finire con i metodi che si sovrappongono. Si dovrebbe anche cercare di mantenere una convenction di denominazione standard in entrambe le classi.

In Immagini il metodo è Images :: insertNew e nelle gallerie è Gallerie:. CreateNew

Ti realtà hanno modelli? Perché ciò che sembra è che avete un sacco di domande per assemblare i singoli valori, ma non oggetti interi.

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