結果オブジェクトを格納することはできませんが、すべての行を配列にフェッチしてその配列を格納することはできます。他の場所でコードのリファクタリングが必要かどうかは、コードをどのように記述したか、および以前にデータベースアクセスをどれだけうまく抽象化したかによって異なります。
たとえば、次のような関数がある場合:
function database_result($query) {
...
$result_array = $result->fetchAll();
return $result_array;
}
次に、その関数内にMemcachedキャッシングを追加できます:
function database_result($query, $expire = 60) {
$memcached_key = 'db:' . $query;
$cached = $memcached->get($memcached_key);
if ($memcached->getResultCode() !== Memcached::RES_NOTFOUND) {
return $cached;
}
...
$result_array = $result->fetchAll();
$memcached->set($memcached_key, $result_array, $expire);
return $result_array;
}
生のPDOまたはMySQLiオブジェクトをどこでも使用する場合は、さらに多くの作業が必要になります。