當嘗試將非靜態方法作為靜態函數存取時,PHP 會產生錯誤訊息嚴格標準:非靜態方法不應該被靜態調用。當在沒有先實例化類別的物件的情況下使用類別方法時,通常會出現此問題。
1.指定類別物件:
要解決此問題,您需要在嘗試呼叫其方法之前建立該類別的實例。例如,不要使用:
,而是使用:
2。將方法標記為靜態:
如果您打算在不實例化類別的情況下呼叫方法,則可以在類別中將該方法定義為靜態。例如:
這允許您直接使用類別名稱呼叫方法:
1.可測試性:
請注意,靜態方法和單例可能會阻礙可測試性。您可能需要考慮替代設計模式來提高測試能力。
2.建構函式最佳化:
避免在建構函式中放置過多的任務。建構函數應該只處理將物件設定為有效狀態。考慮注入資料依賴項,而不是直接從建構函數中取得它們。請記住,建構函式不能傳回值,並且始終傳回 void。
以上是如何修復 PHP「靜態非靜態方法呼叫」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!