Je ces deux méthodesPosible pour rendre ce code plus petit?
private function cacheAdd($id,$data)
{
$this->minicache->set($id,$data);
}
private function cacheGet($id)
{
return $this->minicache->get($id);
}
Chaque fois que si je veux vérifier si les éléments i sont mis en cache dois faire quelque chose comme ça:
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
}
}
Mais je pense qu'il ya une méthode simple faites-le bien?
Je pensais que quelque chose comme ceci:
$this->cache->docache($this->myitems());
et docache méthode prend juste la méthode et convertit la methodname à chaîne et vérifie si l'article est déjà mis en mémoire cache ou non Comment pourrait-il être fait?
EDIT:
Je mis en œuvre cette méthode de 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
}
}
et si je veux appeler la méthode que je fais.
public function getFriendIds()
{
return $this->cache->docache("getFriendIds",$this->twitter->getFriendIds());
}
Non c'est beaucoup plus petit n'est-ce pas?
Qu'est-ce qui vous inquiète? Il n'y a pas grand chose de la méthode 'docache' à améliorer en termes d'efficacité temporelle ou spatiale ou même de lisibilité. Quant à la simplification des choses, les relations de classe pourraient être un bon endroit pour se concentrer. Pourquoi y a-t-il un cache et une minicache? Pourquoi les méthodes de cache déléguer à minicache? Qu'est-ce que 'minicache-> getInfo' fait que' minicache-> get' ne le fait pas? Que renvoie 'minicache-> get' si' $ id' n'est pas dans le cache? – outis
hmm ... vraiment de bonnes questions, minicache est une bibliothèque externe – streetparade