PHP 錯誤:靜態呼叫非靜態方法
錯誤訊息「嚴格標準:非靜態方法 Page::getInstanceByName() PHP中不應靜態呼叫」表示您正在嘗試呼叫非靜態方法,就好像它是static.
了解靜態方法
靜態方法是無需實例化類別物件即可呼叫的類別方法。它們是使用 static 關鍵字聲明的。靜態方法通常用於實用程式函數或存取類別屬性。
修正錯誤
在提供的程式碼中,Page 類別中的 getInstanceByName() 方法是未宣告為靜態。要修復錯誤,請將 static 關鍵字新增至方法聲明:
public static function getInstanceByName($name='') { // Method implementation... }
進行此變更後,您應該能夠呼叫 getInstanceByName() 而不會收到錯誤。
可測試性注意事項
雖然靜態方法很方便,但重要的是要注意它們會使單元測試變得更加困難。這是因為靜態方法不與類別的特定實例綁定,因此不能被模擬或輕鬆地單獨測試。
在建構函式中查詢
它也是值得一提的是,Page 類別建構子包含過多的查詢,這可能會影響效能和程式碼可讀性。考慮重構程式碼以將查詢移至單獨的方法或透過依賴項注入註入必要的資料。
以上是如何解決 PHP 錯誤:「靜態呼叫非靜態方法」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!