static function cachedQuery($cls, $qry, $expiry = 3600) { $c = Memcached_DataObject::memcache(); if (!$c) { $inst = new $cls(); $inst->query($qry); return $inst; } $key_part = Cache::keyize($cls) . ':' . md5($qry); $ckey = Cache::key($key_part); $stored = $c->get($ckey); if ($stored !== false) { return new ArrayWrapper($stored); } $inst = new $cls(); $inst->query($qry); $cached = array(); while ($inst->fetch()) { $cached[] = clone $inst; } $inst->free(); $c->set($ckey, $cached, Cache::COMPRESSED, $expiry); return new ArrayWrapper($cached); }