Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mengakses Pembolehubah Luaran dengan betul (seperti Objek Pangkalan Data) dalam Kelas PHP?

Bagaimana untuk Mengakses Pembolehubah Luaran dengan betul (seperti Objek Pangkalan Data) dalam Kelas PHP?

DDD
Lepaskan: 2024-12-07 03:08:14
asal
987 orang telah melayarinya

How to Properly Access External Variables (like a Database Object) within a PHP Class?

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

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan