Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengakses Pembolehubah Luaran dengan betul (seperti Objek Pangkalan Data) dalam Kelas PHP?
Menggunakan Pembolehubah Global dalam Kelas
Anda sedang cuba mencipta kelas penomboran yang menggunakan pembolehubah luaran. Walau bagaimanapun, anda menghadapi ralat: "Panggil ke pertanyaan fungsi ahli() pada bukan objek."
Isu timbul kerana pembolehubah luaran, $db, tidak boleh diakses secara langsung dalam kelas. Untuk menyelesaikan masalah ini, kami akan meneroka dua pendekatan utama:
Pendekatan 1: Suntikan Ketergantungan
Suntikan Ketergantungan melibatkan menghantar objek pangkalan data sebagai hujah kepada pembina kelas. Kaedah ini memastikan bahawa kelas mempunyai akses kepada kebergantungan yang diperlukan.
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); } }
Pendekatan 2: Kaedah Suntikan
Sebagai alternatif, anda boleh lulus objek pangkalan data sebagai hujah kepada kaedah tertentu yang memerlukannya. Pendekatan ini sesuai apabila hanya beberapa kaedah memerlukan akses kepada pergantungan.
class Paginator { public function get_records($q, DB_MySQL $db) { $x = $db->query($q); return $db->fetch($x); } }
Pilihan antara pendekatan ini bergantung pada keperluan khusus anda. Suntikan kebergantungan diutamakan apabila berbilang kaedah memerlukan kebergantungan, manakala suntikan kaedah sesuai untuk penggunaan kebergantungan terhad.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Pembolehubah Luaran dengan betul (seperti Objek Pangkalan Data) dalam Kelas PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!