Pregunta

Actualmente, tengo una clase de acceso a base de datos llamada DB, que utiliza PDO. Entonces tengo un puñado de sub-clases para acceder a cada tabla:

  • Users
  • Images
  • Galleries
  • Text
  • Videos

Esto era agradable cuando empecé mi proyecto, pero ahora no estoy seguro si es tan grande, ya que tengo un método para cada consulta de base de datos que utilizo dentro de cada una de estas clases. Por ejemplo:

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)

Bueno, se entiende la idea. He ido añadiendo estos métodos como la necesidad de que nace, y en el desarrollo, comienzo con sólo usar la clase DB:

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

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

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

Así, consultas de prueba I con mi clase DB, a continuación, cuando están trabajando, que los envuelven en un método de la clase que se relaciona con él (clase de imágenes para mesa de imágenes, galerías de clase para la tabla de galerías, etc.).

Me siento como esto seguirá creciendo y creciendo como agrego nuevas características más adelante (que puede estar bien, pero no estoy seguro). ¿Puede alguien critica mi método y / o proporcionar soluciones alternativas?

Gracias!

¿Fue útil?

Solución

No, esto en realidad suena bastante bien. Parece que tiene una capa sólida de abstracción entre la lógica de negocio y acceso a datos (Esto se denomina datos Mapper patrón ).

El único problema con esto es conseguir grande, que podría terminar con los métodos que se superponen. También debe tratar de mantener un convenction nomenclatura estándar a través de ambas clases.

En las imágenes, el método es Imágenes :: insertNew y en galerías Galerías es:. Createnew

¿Usted realmente tiene modelos? Debido a lo que parece es que usted tiene una gran cantidad de consultas para ensamblar los valores individuales, pero no objetos enteros.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top