0
A
回答
1
如果你的方法需要訪問「this->」中的數據,那麼你必須使它成爲一種非靜態方法。然後該對象需要實例化(通過「新」)。
如果您的所有方法都使用的是包含在函數參數中的數據,那麼請考慮使您的方法是靜態的。或者僅用靜態方法創建一個單獨的類。
1
這真的取決於你的應用程序的設計。如果該函數可以並且將被調用並且沒有實例化該類,則將其聲明爲靜態。否則,不要。在幾乎所有情況下,你都會使用這兩者的組合,因爲只使用靜態函數是沒有意義的(你也可以編寫程序代碼)。
0
0
有一個思想流派認爲靜態是有害的,應該避免,因爲它們在過於僵化的類之間創建了綁定。例如。如果你有A和B類,它們調用彼此的方法,然後從他們的子類AA和BB,並期望AA調用BB的代碼,如果他們只知道彼此作爲實例,那麼它將很好地工作,但它會失敗對於仍然指向A/B的靜態呼叫。
無論如何,PHP的靜態實現相當糟糕。在5.3之前沒有遲到的靜態綁定(意思是一個對象不能調用它自己的靜態方法,在一個OOP架構中使得靜態函數無用),靜態函數不能在嚴格模式下非靜態地調用,以錯誤的方式調用函數會導致非常奇怪的錯誤,類與他們的父母分享他們的靜態變量......當不確定時,你應該去與非靜態恕我直言。
相關問題
- 1. 對於簡單功能靜態優於靜態優勢
- 2. 靜態和非靜態
- 3. 靜態與非靜態類
- 4. 優化靜態PHP網站
- 5. 非靜態類相對靜態類有什麼優勢?
- 6. Java的android優化。非靜態還是靜態方法?
- 7. PHP的symfony user_call_func(非靜態)
- 8. 非靜態...靜態是什麼?
- 9. 靜態BufferedImage來自非靜態
- 10. C# - 非靜態類的靜態事件
- 11. 使用靜態或非靜態類
- 12. 靜態/非靜態方法問題
- 13. 泛型方法:靜態與非靜態
- 14. 靜態和非靜態方法工作
- 15. 靜態與非靜態變量C++
- 16. 從靜態類觸發非靜態類?
- 17. 非靜態/靜態變量錯誤
- 18. 靜態和非靜態故障
- 19. c#靜態或非靜態類
- 20. 在java中靜態和非靜態?
- 21. 靜態函數和非靜態變量
- 22. 聲明非靜態類靜態
- 23. 訪問非靜態類的靜態類
- 24. 靜態和非靜態數據以JavaScript
- 25. 靜態/非靜態方法參考
- 26. 是t1靜態還是非靜態?
- 27. 非靜態類的靜態成員?
- 28. 聲明類的靜態和非靜態
- 29. powermockito靜態和非靜態方法鏈
- 30. JavaFX的靜態與非靜態
我不認爲你應該單獨使用一個或另一個。僅在有意義時才使用靜態,與實例相同 – Ibu
在Google上找不到太多內容,因爲它非常依賴於應用程序的體系結構和(軟件)設計的外觀。 – slhck
你不能只交換靜態和非靜態函數。你的任何類都不需要一個對象實例來存儲狀態嗎? – Dogbert