I use the Lithium php framework... so I'll include some notes for your requirements as it relates to that framework.
On Mon, May 7, 2012 at 8:16 AM, Justin Demaris <justin.dema...@gmail.com>wrote: > 1) When I instantiate an object by it's ID multiple times, it doesn't > bother to hit up the database after the first time, but just keeps giving > me copies of the same object > I would imagine that most db abstractions won't assume you want to do this and you'll need to implement it in your application. In Lithium, your config/bootstrap/cache.php file, you would register a filter around the Model::find method: Filters::apply('lithium\action\Dispatcher', 'find', function($self, $params, $chain) { // examine the arguments to generate a cache key // Lithium cache has a "memory" adapter that can be used // if object found in cache, return // could also check for a param `$params['cache'] === false` to // support skipping the cache $data = $chain->next($self, $params, $chain); // add storing the data to the cache return $data; }); 2) Lazy load the object values. There are a number of patterns where I've > seen people instantiate a bunch of objects and then only use a small subset > of them. It would be nice if the object only loaded the data when we try to > reference one of its non-ID properties. With Lithium and MongoDB (I'm not sure about other dbs), the result of the database call for a list is just a MongoCursor and the "entities" (as Lithium calls them) are only instantiated when needed. It does cache those objects inside the result object. It is possible to unset that cached object though and free up memory (I was able to roll out a huge CSV file this way without using much memory). 3) Ability to tweak the back end to work with other database systems > (especially Riak, Mongo and Cassandra) MongoDB support is strong and built-in to Lithium. It's not too difficult to roll out adapters for other databases - especially those that operate over http. There is a CouchDb adapter included that works this way. http://lithify.me
_______________________________________________ New York PHP User Group Community Talk Mailing List http://lists.nyphp.org/mailman/listinfo/talk http://www.nyphp.org/show-participation