Ben başvuru sayıları üzerinde PHP tabanlı veritabanı önbelleğe alma işlevselliğini uygulamak istiyorum. Örneğin, foo 1 bir kimliği ile tablo kayıt erişmek için kod gibi görünebilir:
$fooRecord = $fooTable->getRecord(1);
Bu denir ilk kez, $ FOOTABLE, veritabanından uygun kaydını getirir bir iç önbelleğe bunu saklar ve onu döndürür. GetRecord Herhangi sonraki çağrılar (1) bellekteki aynı nesneye başka referans dönecektir. It destructs zaman $ fooRecord $ FOOTABLE sinyal verir ve hiçbir kalan referanslar varsa, bu geri veritabanına herhangi bir değişiklik depolayan ve önbellekten kaldırır.
Sorun PHP'nin bellek yönetimi referans sayıları hakkında ayrıntılı uzakta soyutlayan olmasıdır. Ben bunu bir uzantısı için PECL'de ve Google arandı, ancak bir sonuç yok buldum. Yani soru # 1: Böyle bir eklenti mevcut mu?
Alternatif bir yaklaşım olarak, $ FOOTABLE bir süper-gizli sahte nesnesi döndürür. Bu __ () çağrısı, __ set () ileterek kayıt gibi davrandığı ve __ get () ve onun yapıcı ve yıkıcı referans sayma amaçlı uygun kanca sağlar. Testler, bu tip ipuçlarını sonları dışında, harika çalışıyor. Ben yok ki, every one of my tables için Sneaky boş bir alt sınıf oluşturma gibi hissediyorum eğer bir FooRecord nesneyi bekliyorduk tüm yöntemleri artık Sinsi bir nesne olsun, ya da belki bir FooSneaky. Ayrıca, ben (benim gibi) bakım programcılar karıştırmayın korkuyorum.
Soru 2: Ben kaçırdım başka bir yaklaşım var mı?