Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mengelakkan Pembolehubah Global Apabila Mengakses Objek Pangkalan Data dalam Kelas?

Bagaimana untuk Mengelakkan Pembolehubah Global Apabila Mengakses Objek Pangkalan Data dalam Kelas?

Patricia Arquette
Lepaskan: 2024-12-22 15:00:20
asal
198 orang telah melayarinya

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

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);
    }
}
Salin selepas log masuk

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);
    }
}
Salin selepas log masuk

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:

  • Ketergantungan Ditakrifkan Secara Eksplisit: Ia menjelaskan objek mana yang bergantung pada orang lain , menghapuskan kebergantungan tersembunyi.
  • Longgar Gandingan: Kelas boleh bertukar dengan mudah kepada objek pangkalan data yang berbeza atau dipermainkan untuk tujuan ujian.
  • Kebolehujian: Ujian unit boleh memfokuskan pada kelas semata-mata tanpa mengganggu fungsi pangkalan data.
  • Kebolehluasan: Ia membenarkan penggunaan berbilang pangkalan data atau rangka kerja lain tanpa kod utama perubahan.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan