首頁 >後端開發 >php教程 >如何正確存取 PHP 類別中的全域變數?

如何正確存取 PHP 類別中的全域變數?

DDD
DDD原創
2024-12-10 04:48:13480瀏覽

How Can I Access Global Variables Within a PHP Class Without Errors?

存取類別內的全域變數

簡介

從類別內存取全域變數的困境是物件導向中遇到的常見挑戰程式設計。本文專門解決了 PHP 中的問題,為「在非物件上呼叫成員函數 query()」錯誤提供了替代解決方案。

問題

在提供的程式碼片段中,致命錯誤是由於嘗試在 pigi 類別的 get_records() 方法中呼叫 $db 變數上的 query() 方法而引起的。根本原因是類別和全域 $db 物件之間缺乏已建立的連線。

替代解決方案

1.依賴注入

依賴注入是一種設計模式,涉及將所需的物件作為參數傳遞給類。在這種情況下,資料庫連接物件(即 $db)將被注入到 pigi 類別的建構子中。此方法可確保類別可以存取全域變量,而無需求助於全域範圍。

2.方法參數注入

或者,資料庫連接物件可以作為參數傳遞給 get_records() 方法本身。雖然這種方法不一定會改進封裝,但它可以在管理依賴項方面提供更大的靈活性。

依賴注入的好處

1。鬆散耦合:

依賴注入促進類別之間的鬆散耦合,使得更容易根據需要交換依賴關係。在這種情況下,無需修改 pigi 類別的程式碼即可直接切換到不同的資料庫連線。

2.單元測試:

透過參數傳遞依賴關係,可以更有效率地進行單元測試。不是同時測試多個類,而是僅測試特定單元(在本例中為 pigi 類)。

結論

依賴注入和方法參數注入都為存取全域變數提供了可行的解決方案在一個班級內。兩種方法之間的選擇取決於應用的特定設計要求。最終,這兩種方法的目的都是保持封裝性,同時提供對必要的外部資源的存取。

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

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