استخدام المتغيرات العامة داخل الفصل
يتضمن إنشاء وظيفة ترقيم الصفحات الوصول إلى كائن قاعدة البيانات من داخل الفصل. ومع ذلك، فإن محاولة الوصول إلى متغير خارجي داخل الفصل قد تؤدي إلى حدوث أخطاء. دعونا نتعمق في الحلول الممكنة للتعامل مع هذه المشكلة.
لمعالجة الخطأ الفادح "استدعاء دالة عضو () على غير كائن"، يجب أن يكون كائن قاعدة البيانات قابلاً للوصول داخل الفصل الدراسي. بدلاً من استخدام المتغيرات العامة، فإن الطريقة الأكثر ملاءمة هي حقن كائن قاعدة البيانات في الفصل أو أساليبه.
حقن التبعية
إحدى الطرق هي حقن قاعدة البيانات كائن في منشئ الفئة، كما هو موضح أدناه:
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