我一直在PHP開發一段時間,但直到最近才切換到OOP方法。這一直此起彼伏,我面向對象的最佳實踐(特別是PHP)
的一個問題是「有多遠」去與面向對象的東西,特別是在執行速度方面和內存資源等
例如,假設我有2個對象,用戶和列表
列表總是鏈接到一個單獨的用戶。 UserId是Listing的一個屬性,所以我知道它與哪個用戶相關。 偶爾,在Listing方法中,我需要訪問相關用戶的單個屬性。
據我所見(請告知如果沒有的話)我有3個選項可以實現這個功能。
創建一個新的用戶對象,並通過$用戶訪問培訓相關屬性格式 - >利人
進行必要的財產清單的本地屬性和填充此房源被初始化時(例如,通過SQL JOIN )
查詢數據庫直接檢索用戶的通過用戶ID所需要的屬性
它似乎對我來說,選項1更加嚴格地遵守OOP規則,但由於初始化整個對象只是爲了檢索1個屬性而具有性能命中。選項3將是最少的內存密集型,但完全避開了OOP。另外,就創建時填充對象而言,我的大多數對象在初始化後不久(通過只需要1個DB查詢)就通過一個「填充」方法獲得大部分屬性。這通常會被認爲是最佳實踐,還是最好使用單獨的方法來獲得這些屬性,並在需要時填充?
我意識到這可能沒有「正確」的答案,但任何人都可以提供有關處理這種情況的最佳方法的建議嗎?
非常感謝 尼克
你可以一舉(1 + 2)儘快爲他們登錄(假設登錄),填充它,並把它存儲爲對象(S)獲取有關用戶的一切,那麼就保持它周圍,以獲取有關信息直到他們註銷然後銷燬該對象。我想這就是我應該去做的。 – robx 2011-06-01 07:48:51
除非你異形這三種方法,找到一個signigicantly阻礙性能,你不應該現在操心內存消耗和處理速度。只要使用有用的東西。 – Gordon 2011-06-01 07:49:40
如何使User對象成爲Listing對象的屬性,而不僅僅是UserId? – prasopes 2011-06-01 07:50:12