Pergunta

Atualmente, tenho uma classe de acesso ao banco de dados nomeada DB, que usa PDO. Eu tenho então um punhado de subclasses para acessar cada tabela:

  • Users
  • Images
  • Galleries
  • Text
  • Videos

Isso foi bom quando iniciei meu projeto, mas agora não tenho certeza se é tão bom, pois tenho um método para cada consulta de banco de dados que uso em cada uma dessas classes. Por exemplo:

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)

Bem, você entendeu a ideia. Eu tenho adicionado esses métodos à medida que a necessidade deles surge e, no desenvolvimento, começo apenas usando o DB classe:

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

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

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

Então, eu testo consultas com minha classe de banco de dados e, quando elas estão trabalhando, envolvo -as em um método da classe relacionada a ela (classe de imagem para imagens tabela, classe de galerias para galerias, etc.).

Sinto que isso continuará crescendo e crescendo à medida que adiciono novos recursos mais tarde (o que pode estar bem, mas não tenho certeza). Alguém pode criticar meu método e/ou fornecer soluções alternativas?

Obrigado!

Foi útil?

Solução

Não, isso realmente parece muito bom. Você parece ter uma camada de abstração sólida entre a lógica de negócios e o acesso a dados (isso é chamado Padrão de mapeador de dados).

O único problema com isso ficando grande é que você pode acabar com métodos que se sobrepõem. Você também deve tentar manter uma convidação de nomeação padrão em ambas as classes.

Em imagens, o método é imagens :: insertnew e em galerias são galerias: createnew.

Você realmente tem modelos? Porque o que parece é que você tem muitas consultas para montar valores únicos, mas não objetos inteiros.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top