Frage

Zur Zeit habe ich eine Datenbankzugriffsklasse mit dem Namen DB, die PDO verwendet. Ich habe dann eine Handvoll Unterklassen für jede Tabelle zuzugreifen:

  • Users
  • Images
  • Galleries
  • Text
  • Videos

Es war schön, wenn ich mein Projekt zum ersten Mal gestartet, aber jetzt bin ich nicht sicher, ob es so toll ist, wie ich eine Methode für jede Datenbankabfrage habe, dass ich innerhalb jedem dieser Klassen verwenden. Zum Beispiel:

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)

Nun, Sie wissen schon. Ich habe diese Methoden schon länger als die Notwendigkeit für sie entsteht, und in der Entwicklung, beginne ich durch nur die DB-Klasse:

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

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

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

Also, ich Testanfragen mit meiner DB Klasse, dann, wenn sie arbeiten, ich sie in einem Verfahren der Klasse wickle, die es (Image-Klasse für Bilder Tisch, Galerien Klasse für Galerien Tisch, etc.) in Zusammenhang steht.

Ich fühle mich wie diese halten wächst und wächst, wie ich neue Funktionen hinzuzufügen später (was in Ordnung sein, aber ich bin mir nicht sicher). Kann jemand Kritik meiner Methode und / oder alternative Lösungen zur Verfügung stellen?

Danke!

War es hilfreich?

Lösung

Nein, das klingt eigentlich ziemlich gut. Sie scheinen eine solide Abstraktionsschicht zwischen Geschäftslogik und Datenzugriff zu haben (Das nennt man Data Mapper Muster ).

Das einzige Problem mit dieser immer groß ist, dass man mit Methoden könnten am Ende, die sich überlappen. Sie sollten auch versuchen, einen Standard-Namen Konvektion über beiden Klassen zu erhalten.

Bilder ist das Verfahren Images :: insertNew und in Galerien ist es Galerien:. CreateNew

Haben Sie eigentlich Modelle? Denn das, was es sieht aus wie ist, dass Sie viele Anfragen müssen Einzelwerte zusammenstellen, aber nicht ganze Objekte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top