2

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);

そこで、DBクラスを使用してクエリをテストし、それらが機能しているときに、それに関連するクラスのメソッド(画像テーブルの場合は画像クラス、ギャラリーテーブルの場合はギャラリークラスなど)でクエリをラップします。

後で新しい機能を追加するにつれて、これはどんどん成長していくと思います(これは問題ないかもしれませんが、確かではありません)。誰かが私の方法を批評したり、代替ソリューションを提供したりできますか?

ありがとう!

4

1 に答える 1

1

いいえ、これは実際にはかなり良い音です。ビジネスロジックとデータアクセスの間にしっかりとした抽象化レイヤーがあるようです(これはデータマッパーパターンと呼ばれます)。

これが大きくなることの唯一の問題は、メソッドが重複してしまう可能性があることです。また、両方のクラスで標準の命名規則を維持するようにしてください。

ImagesではメソッドはImages::insertNewであり、GalleriesではGalleries:createNewです。

実際にモデルはありますか?オブジェクト全体ではなく、単一の値をアセンブルするためのクエリがたくさんあるように見えるからです。

于 2010-08-04T16:06:05.480 に答える