Вопрос

В настоящее время у меня есть класс доступа к базе данных по имени DB, который использует PDO. Отказ Затем у меня есть горстка подкласс для доступа к каждой таблице:

  • Users
  • Images
  • Galleries
  • Text
  • Videos

Это было приятно, когда я впервые начал свой проект, но теперь я не уверен, если это здорово, так как у меня есть метод для каждой базы данных, который я использую в каждом из этих классов. Например:

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)

Ну, вы получаете идею. Я добавил эти методы, поскольку необходимость в них возникает, а в разработке я начинаю, просто используя DB сорт:

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

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

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

Итак, я проверяю запросы с моим классом БД, то, когда они работают, я обернутую их в методе класса, который связан с ним (Class Image for Images Table, класс Galleries для таблицы галерей и т. Д.).

Я чувствую, что это будет расти и расти, когда добавляю новые функции позже (что может быть в порядке, но я не уверен). Может кто-нибудь можно критиковать мой метод и / или предоставлять альтернативные решения?

Спасибо!

Это было полезно?

Решение

Нет, это на самом деле звучит довольно хорошо. Кажется, у вас есть солидный слой абстракции между бизнес-логикой и доступом к данным (это называется Схема Mapper данных).

Единственная проблема с этим становится большим, что вы можете в конечном итоге с методами, которые перекрываются. Вы также должны попытаться сохранить стандартное называть имена в обоих классах.

В изображениях Способ изображений :: insertnew и в галереях это галереи: CreateNew.

У вас на самом деле есть модели? Потому что то, что похоже, у вас есть много запросов для сборки одного значения, но не целых объектов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top