2010-03-07 39 views
1

我在一個項目中使用ActivePattern組織的類(例如:myObject-> Load()),但現在我們需要實現一些緩存和緩存有問題。ActiveRecord模式和緩存?

爲了簡單起見,每個對象中的Load()方法調用DAL,我給出$ this引用,DAL填充所有值的對象。有用。但是,當我們添加一些緩存時,未序列化的對象是一個「新」對象,並且DAL無法將其發送回對象,因爲我們有需要加載的對象的引用。唯一的解決方法是將緩存代碼放入每個對象的Load()中,並將緩存對象中的所有屬性循環獲取值並將其設置回實際對象。

有沒有更好的方式來使用ActiveRecord模式緩存?

+0

我很努力去理解 - 你想要緩存什麼?你能給出一個你現在做什麼的代碼示例嗎? – spronkey 2010-03-07 21:55:42

+0

我想緩存$ myObject。如果我做$ myObject-> Load(),一旦從數據庫加載,我可以輕鬆地緩存它,因爲在Load()中,我傳遞給了DAL myObject引用並加載了它。我可以將它保存到緩存(serialize($ this))。問題是什麼時候Load()稍後的時候......它發現它在緩存中,它返回一個新的對象,但是我在對象中,而我不能這樣做$ this = $ objectUnserializedFromCache;你懂了? – 2010-03-07 22:01:12

回答

0

如果我從你的評論正確理解你的問題是取代這一點。我要做的是在活動記錄類上創建靜態「fetch」方法,該方法將檢查緩存,如果可用則返回,並且如果不返回該類的新實例。這會讓你四處取代這個,你唯一需要改變的就是你加載活動記錄類的方式。