2009-08-14 46 views
0

當實現一些網站將使用的新數據對象時,我總是遇到同樣的問題。這在我看來,天然化,填補了對象......PHP MVC - 如何在不同層 - 對象或數組之間傳遞數據

object: news 
news subobjects: mediaItems, user, category 

我usualy實現關聯對象(對象列表)的延遲加載,也有一個靜態方法來一次填補消息對象的數據,媒體和類別(從一個連接的SQL查詢,因爲延遲加載請求3個查詢)。但有時,實際上很常見,我需要額外的參數,用於在新聞對象旁邊提取的特定視圖或聚合。爲了得到這個參數,我會使用一個新的sql查詢。同時,我知道我可以使用一個更復雜的查詢來獲取包含此參數的新聞對象。

我的問題的基本原理是:我是否將數據作爲一行項目提取,並在後面的情況下將其傳遞給視圖,或者在特定加載和處理添加參數的情況下容納新聞對象,僅在此視圖中需要並僅用於顯示。

回答

0

我想這取決於情況。有時候,它只是簡單地將它與原始查詢結合起來,有時它不值得 - 尤其是如果數據是可以緩存的。

我的應用程序使用了一種組合方式 - 我們會連接來爲每行生成多個對象,並且我們會執行多個查詢來拉回其他一些東西。儘管一切都通過memcache緩存,所以我們並不總是擔心太多的查詢,只要它們簡單快捷。然後我們將行列表(如新聞帖子列表)傳遞給視圖(實際上是一個db_table_rowset),對於其他查詢,我們只傳遞各個行(db_table_row objs)。當然,還有其他的變數傳遞給視圖。該視圖然後正確地使用行(模型)的工作