2010-03-07 5 views
1

J'ai dans une classe de projet organisée avec ActivePattern (exemple: myObject-> Load()) mais maintenant nous devons implémenter une mise en cache et la mise en cache est problématique. Pour simplifier, la méthode Load() de chaque objet appelle le DAL my en donnant le $ this référence et le DAL remplit l'objet que toutes les valeurs. Ça marche. Mais lorsque nous ajoutons un cache, l'objet non sérialisé est un objet "nouveau" et le DAL ne peut pas le renvoyer à l'objet car nous avons une référence à l'objet qui doit être chargé. Le seul travail consiste à placer le code de cache dans le Load() de chaque objet et à boucler toutes les propriétés de l'objet de mise en cache pour obtenir la valeur et pour la remettre à l'objet réel.ActiveRecord Motif et mise en cache?

Existe-t-il une meilleure façon d'utiliser la mise en cache avec ActiveRecord Pattern?

+0

J'ai du mal à comprendre - qu'est-ce que vous voulez mettre en cache? Pouvez-vous donner un exemple de code de ce que vous faites en ce moment? – spronkey

+0

Je veux mettre en cache $ myObject. Si je fais $ myObject-> Load(), une fois chargé à partir de la base de données, je peux facilement le mettre en cache parce que dans Load() j'ai transmis à la DAL la référence myObject et l'a chargée. Je peux l'enregistrer dans le cache (sérialiser ($ this)). Le problème est quand il est temps de charger() plus tard ... il trouve que c'est dans le cache, il retourne un nouvel objet non sérialisé mais je suis dans l'objet et je ne peux pas faire $ this = $ objectUnserializedFromCache; Vous l'obtenez? –

Répondre

0

Si je comprends bien votre commentaire, votre problème est de le remplacer. Ce que je ferais est de créer une méthode "fetch" statique sur la classe d'enregistrement active qui vérifierait le cache, retournerait si disponible, et sinon renverrait une nouvelle instance de la classe. Cela vous permettra de remplacer cela, et la seule chose que vous devez changer est la façon dont vous chargez la classe d'enregistrement active.

Questions connexes