首頁 >後端開發 >php教程 >如何在 PHP 類別中正確存取外部變數(如資料庫物件)?

如何在 PHP 類別中正確存取外部變數(如資料庫物件)?

DDD
DDD原創
2024-12-07 03:08:14995瀏覽

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

在類別中使用全域變數

您正在嘗試建立一個使用外部變數的分頁類別。但是,您遇到錯誤:「在非物件上呼叫成員函數 query()。」

出現問題的原因是外部變數 $db 在類別中無法直接存取。為了解決這個問題,我們將探索兩種主要方法:

方法1:依賴注入

依賴注入涉及將資料庫物件作為參數傳遞給類別的建構函數。此方法確保類別可以存取必要的依賴項。

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);
    }
}

方法 2:方法注入

或者,您可以將資料庫物件作為參數傳遞到需要它的具體方法。當只有少數方法需要存取依賴項時,此方法適用。

class Paginator
{
    public function get_records($q, DB_MySQL $db)
    {
        $x = $db->query($q);
        return $db->fetch($x);
    }
}

這些方法之間的選擇取決於您的特定要求。當多個方法需要依賴時,首選依賴注入,而方法注入適用於有限的依賴使用。

以上是如何在 PHP 類別中正確存取外部變數(如資料庫物件)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn