Dalam kod anda, anda mengalami ralat apabila cuba mengakses pembolehubah yang ditakrifkan di luar kelas dalam kaedah kelas. Isu ini timbul kerana mengakses pembolehubah global secara langsung dari dalam kelas biasanya tidak disyorkan dalam PHP. Walau bagaimanapun, terdapat beberapa kaedah untuk mencapai matlamat ini:
Pendekatan pilihan adalah dengan melaksanakan suntikan kebergantungan. Ini melibatkan menghantar objek pangkalan data sebagai hujah kepada pembina kelas, membenarkan kelas mengakses dan menggunakan pembolehubah tanpa memerlukan skop global.
class Paginator { private $db; public function __construct(DB_MySQL $db) { $this->db = $db; } // ... } // Usage: $db = new DB_MySQL("localhost", "root", "", "test"); $pagination = new Paginator($db);
Sebagai alternatif , anda boleh menyuntik contoh pangkalan data terus ke dalam kaedah yang memerlukannya.
class Paginator { public function get_records($q, DB_MySQL $db) { // ... } } // Usage: $pagination = new Paginator(); $pagination->get_records("SELECT * FROM `table`", $db);
Walaupun pada umumnya tidak digalakkan, anda boleh menggunakan kata kunci global untuk mengakses pembolehubah global dalam kaedah kelas. Walau bagaimanapun, teknik ini mungkin mengacaukan kod dan menjadikannya kurang boleh diselenggara.
class Paginator { public function get_records($q) { global $db; // ... } } // Usage: $db = new DB_MySQL("localhost", "root", "", "test"); $pagination = new Paginator();
Ingat bahawa menggunakan pembolehubah global dari dalam kelas datang dengan potensi kelemahan, termasuk isu pergantungan, pengurangan kebolehujian dan isu kejelasan kod. Oleh itu, adalah disyorkan untuk mempertimbangkan suntikan pergantungan atau menyuntik contoh ke dalam kaedah apabila mengakses pembolehubah dari luar kelas dalam PHP.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Pembolehubah Global Dalam Kelas PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!