Esempio n. 1
0
 /**
  * Clear by tags
  *
  * @param  CachePoolInterface $cache
  * @param  string $tag tag
  * @return bool
  * @access public
  */
 public function clearByTag(CachePoolInterface $cache, $tag)
 {
     // get tagItem for $tag
     $tagKey = $this->getTagKey($tag);
     $tagItem = $cache->getItem($tagKey);
     // read array of keys from $tagItem
     if ($tagItem->isHit()) {
         $keyArray = $tagItem->get();
         foreach (array_keys($keyArray) as $key) {
             if ($cache->deleteItem($key)) {
                 unset($keyArray[$key]);
             }
         }
         // get error
         if (count($keyArray)) {
             $this->setError($cache->getError(), $cache->getErrorCode());
         }
         // update tagItem
         $tagItem->set($keyArray);
         $tagItem->expiresAfter($this->tag_life);
         // one year
         $cache->save($tagItem);
         if (count($keyArray)) {
             return false;
         }
     }
     return $this->trueAndFlushError();
 }