سؤال

حاليا ، لدي فئة الوصول إلى قاعدة البيانات المسمى 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 الخاصة بي ، ثم عندما تعمل ، ألفها بطريقة من الفئة المرتبطة به (فئة الصور لجدول الصور ، فئة المعارض لجدول المعارض ، إلخ).

أشعر أن هذا سيستمر في النمو والنمو أثناء إضافة ميزات جديدة لاحقًا (والتي قد تكون على ما يرام ، لكنني لست متأكدًا). هل يمكن لأي شخص أن ينتقد طريقتي و/أو توفير حلول بديلة؟

شكرًا!

هل كانت مفيدة؟

المحلول

لا ، هذا يبدو في الواقع جيد جدا. يبدو أن لديك طبقة تجريد قوية بين منطق العمل والوصول إلى البيانات (وهذا ما يسمى نمط MAPPER البيانات).

المشكلة الوحيدة في الحصول على هذا الكبير هي أن ينتهي بك الأمر بالطرق التي تتداخل. يجب عليك أيضًا محاولة الحفاظ على استنزاف قياسي في كلا الفئتين.

في الصور ، الطريقة هي الصور :: insertnew وفي المعارض ، فهي معارض: CreateNew.

هل لديك بالفعل نماذج؟ لأن ما يبدو عليه هو أن لديك الكثير من الاستفسارات لتجميع القيم المفردة ، ولكن ليس الكائنات الكاملة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top