首頁 > 資料庫 > mysql教程 > 如何在 PHP 中存取類別方法內的全域變數?

如何在 PHP 中存取類別方法內的全域變數?

Susan Sarandon
發布: 2025-01-18 00:30:09
原創
212 人瀏覽過

How Can I Access Global Variables Inside Class Methods in PHP?

存取 PHP 類別方法內的外部變數

嘗試從類別方法內直接存取全域變數 ($db)(例如 get_records 類別中的 pagi)會導致錯誤。這是由於範圍可變造成的;全域變數在類別方法中不會自動可用。 解決方案涉及將變數明確傳遞到類別中。

解:依賴注入

最好的方法是依賴注入。這涉及將必要的物件(在本例中為資料庫物件)作為參數傳遞給類別建構函數或直接傳遞給方法。這使得類別獨立於全域變量,提高了程式碼的可維護性和可測試性。

方法一:透過建構子注入

<code class="language-php">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);
    }
}

$pagination = new Paginator($db); // Pass the DB object
$records = $pagination->get_records("SELECT * FROM `table`");</code>
登入後複製

方法二:直接注入法

或者,您可以將資料庫物件直接傳遞給方法:

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

$pagination = new Paginator();
$records = $pagination->get_records("SELECT * FROM `table`", $db); // Pass DB object to method</code>
登入後複製

推薦:建構子注入

雖然這兩種方法都有效,但建構函式註入(方法 1)通常是首選。它促進松耦合,使程式碼更加模組化、可測試且更易於維護。 直接方法注入(方法 2)可能會降低程式碼的可讀性並且更難重構。 盡可能避免依賴全域變數。

以上是如何在 PHP 中存取類別方法內的全域變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板