Menggunakan Pembolehubah Global dalam Kelas
Mencipta kefungsian penomboran melibatkan mengakses objek pangkalan data dari dalam kelas. Walau bagaimanapun, percubaan untuk mengakses pembolehubah luar di dalam kelas boleh membawa kepada ralat. Mari kita mendalami kemungkinan penyelesaian untuk menangani isu ini.
Untuk menangani ralat maut "Panggil ke pertanyaan fungsi ahli() pada bukan objek," objek pangkalan data perlu boleh diakses dalam kelas. Daripada menggunakan pembolehubah global, pendekatan yang lebih sesuai ialah menyuntik objek pangkalan data ke dalam kelas atau kaedahnya.
Suntikan Ketergantungan
Satu kaedah ialah menyuntik pangkalan data objek ke dalam pembina kelas, seperti ditunjukkan di bawah:
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); } }
Ini membolehkan kelas penomboran mengakses objek pangkalan data secara langsung.
Suntikan Kaedah
Pilihan lain ialah menyuntik objek pangkalan data ke dalam kaedah khusus yang memerlukannya:
$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); } }
Ini menyediakan lebih banyak fleksibiliti apabila pelbagai kaedah mempunyai keperluan pangkalan data yang berbeza-beza.
Faedah Kebergantungan Suntikan
Berbanding dengan menggunakan pembolehubah global, suntikan kebergantungan menawarkan beberapa kelebihan:
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Pembolehubah Global Apabila Mengakses Objek Pangkalan Data dalam Kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!