我有這樣的兩種方法是否可以讓此代碼更小?
private function cacheAdd($id,$data)
{
$this->minicache->set($id,$data);
}
private function cacheGet($id)
{
return $this->minicache->get($id);
}
每次如果我要檢查的項目會被緩存,我必須做這樣的事情:
public function getFriendIds()
{
$info = $this->cache->minicache->getInfo("getFriendIds"); // if its an array then it is cached
if(is_array($info))
{
return $this->cache->cacheGet("getFriendIds"); // return the cached object
}
// from here items wasnt cached
else
{
$this->cache->cacheAdd("getFriendIds",$this->twitter->getFriendIds()); // so add to cache
return $this->cache->cacheGet("getFriendIds"); // and return the cached items
}
}
但我認爲這是一個簡單的方法來這樣做對嗎?
我想是這樣的:
$this->cache->docache($this->myitems());
和方法docache僅需方法和方法名轉換爲字符串,並檢查該項目已經被緩存或不怎麼可能做到?
編輯:
我實現了這個docache方法
public function docache($id,$data)
{
$info = $this->minicache->getInfo($id);
if(is_array($info))
{
return $this->cache->cacheGet($id); // return the cached object
}
else
{
$this->cacheAdd($id,$data); // so add to cache
return $this->cacheGet($id); // and return the cached items
}
}
如果我想打電話給我這樣做的方法。
public function getFriendIds()
{
return $this->cache->docache("getFriendIds",$this->twitter->getFriendIds());
}
不是這樣小得多嗎?
你有什麼擔心?在時間或空間效率或可讀性方面,沒有太多的「docache」方法可以改進。至於簡化的事情,階級關係可能是一個很好的關注點。爲什麼會有緩存和小型文件?爲什麼緩存方法委託給minicache? 'minicache-> getInfo'做的是'minicache-> get'不是嗎?如果'$ id'不在緩存中,'minicache-> get'會返回什麼? – outis 2009-12-31 13:24:12
嗯...真的很好的問題,minicache是一個外部庫 – streetparade 2009-12-31 13:34:53