結果を何にでもキャッシュする Decorator 型クラスを作成しようとしています (memecache から始めます)。各メソッドはキャッシュ $this->cache->get($key) をチェックする必要があり、見つからない場合は実際のメソッド $this->real->getExpensiveInfo01($param1, $param2, $param3) を呼び出してから $this に設定する必要があります->cache->set($key, $expensiveInfo). したがって、各メソッドにはこのボイラープレート コードがあります。
class ExpensiveCache implements ExpensiveInterface
{
public function getExpensiveInfo01($param1, $param2, $param3)
{
$key = __FUNCTION__ . $param1 . $param2 . $param3;
$rtn = $this->cache->get($key);
if ($rtn === false) {
$rtn = $this->expensive->getExpensiveInfo01($param1, $param2, $param3);
$cacheStatus = $this->cache->set($key, $rtn);
}
return $rtn;
}
public function getExpensiveInfo02($param1, $param2)
{
$key = __FUNCTION__ . $param1 . $param2;
$rtn = $this->cache->get($key);
if ($rtn === false) {
$rtn = $this->expensive->getExpensiveInfo02($param1, $param2);
$cacheStatus = $this->cache->set($key, $rtn);
}
return $rtn;
}
public function getExpensiveInfo03($param1, $param2)
{
$key = __FUNCTION__ . $param1 . $param2;
$rtn = $this->cache->get($key);
if ($rtn === false) {
$rtn = $this->expensive->getExpensiveInfo03($param1, $param2);
$cacheStatus = $this->cache->set($key, $rtn);
}
return $rtn;
}
}
ボイラープレートコードを1つのプライベートメソッド呼び出しに減らすために、とにかくPHP5.3(CentOSを気にしないでください)にあります。