"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تجنب المتغيرات العامة عند الوصول إلى كائن قاعدة البيانات داخل الفصل؟

كيفية تجنب المتغيرات العامة عند الوصول إلى كائن قاعدة البيانات داخل الفصل؟

تم النشر بتاريخ 2024-12-21
تصفح:231

How to Avoid Global Variables When Accessing a Database Object within a Class?

استخدام المتغيرات العامة داخل الفصل

يتضمن إنشاء وظيفة ترقيم الصفحات الوصول إلى كائن قاعدة البيانات من داخل الفصل. ومع ذلك، فإن محاولة الوصول إلى متغير خارجي داخل الفصل قد تؤدي إلى حدوث أخطاء. دعونا نتعمق في الحلول الممكنة للتعامل مع هذه المشكلة.

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

حقن التبعية

إحدى الطرق هي حقن قاعدة البيانات كائن في منشئ الفئة، كما هو موضح أدناه:

include_once("pagi.php");

$db = new DB_MySQL("localhost", "root", "", "test"); // connect to the database

$pagination = new Paginator($db);
$records = $pagination->get_records("SELECT * FROM `table`");

class Paginator
{    
    protected $db;

    public function __construct(DB_MySQL $db)
    {
        $this->db = $db;
    }

    public function get_records($q) {
        $x = $this->db->query($q);
        return $this->db->fetch($x);
    }
}

يسمح هذا لفئة ترقيم الصفحات بالوصول إلى كائن قاعدة البيانات مباشرة.

طريقة الحقن

هناك خيار آخر وهو إدخال كائن قاعدة البيانات في كائن قاعدة البيانات المحدد. الطريقة التي تتطلب ذلك:

$pagination = new Paginator(); $records = $pagination->get_records("SELECT * FROM `table`"، $db); مصفح الصف { الوظيفة العامة get_records($q, DB_MySQL $db) { $x = $db->query($q); إرجاع $db->fetch($x); }
$pagination = new Paginator();
$records = $pagination->get_records("SELECT * FROM `table`", $db);

class Paginator
{
    public function get_records($q, DB_MySQL $db) {
        $x = $db->query($q);
        return $db->fetch($x);
    }
}
يوفر هذا مزيدًا من المرونة عندما تحتوي الطرق المتعددة على متطلبات مختلفة لقاعدة البيانات.

فوائد حقن التبعية

بالمقارنة باستخدام المتغيرات العالمية، توفر حقن التبعية العديد من المزايا:

  • التبعيات المحددة بشكل صريح: يوضح الكائنات التي تعتمد عليها الآخرين، والقضاء على التبعيات المخفية.
  • اقتران فضفاض: يمكن للفئة التبديل بسهولة إلى كائن قاعدة بيانات مختلف أو مستهزئ به لأغراض الاختبار.
  • القابلية للاختبار: يمكن أن تركز اختبارات الوحدة فقط على الفصل دون التدخل في وظائف قاعدة البيانات.
  • قابلية التوسعة:
  • تسمح باستخدام قواعد بيانات متعددة أو أطر عمل أخرى بدون تغييرات كبيرة في التعليمات البرمجية.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3