從類別內存取全域變數的困境是物件導向中遇到的常見挑戰程式設計。本文專門解決了 PHP 中的問題,為「在非物件上呼叫成員函數 query()」錯誤提供了替代解決方案。
在提供的程式碼片段中,致命錯誤是由於嘗試在 pigi 類別的 get_records() 方法中呼叫 $db 變數上的 query() 方法而引起的。根本原因是類別和全域 $db 物件之間缺乏已建立的連線。
1.依賴注入
依賴注入是一種設計模式,涉及將所需的物件作為參數傳遞給類。在這種情況下,資料庫連接物件(即 $db)將被注入到 pigi 類別的建構子中。此方法可確保類別可以存取全域變量,而無需求助於全域範圍。
2.方法參數注入
或者,資料庫連接物件可以作為參數傳遞給 get_records() 方法本身。雖然這種方法不一定會改進封裝,但它可以在管理依賴項方面提供更大的靈活性。
1。鬆散耦合:
依賴注入促進類別之間的鬆散耦合,使得更容易根據需要交換依賴關係。在這種情況下,無需修改 pigi 類別的程式碼即可直接切換到不同的資料庫連線。
2.單元測試:
透過參數傳遞依賴關係,可以更有效率地進行單元測試。不是同時測試多個類,而是僅測試特定單元(在本例中為 pigi 類)。
依賴注入和方法參數注入都為存取全域變數提供了可行的解決方案在一個班級內。兩種方法之間的選擇取決於應用的特定設計要求。最終,這兩種方法的目的都是保持封裝性,同時提供對必要的外部資源的存取。
以上是如何正確存取 PHP 類別中的全域變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!