1<?php 2 3/* 4 * This file is part of the Assetic package, an OpenSky project. 5 * 6 * (c) 2010-2014 OpenSky Project Inc 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12namespace Assetic\Cache; 13 14/** 15 * Uses APC to cache files 16 * 17 * @author André Roaldseth <andre@roaldseth.net> 18 */ 19class ApcCache implements CacheInterface 20{ 21 public $ttl = 0; 22 23 /** 24 * @see CacheInterface::has() 25 */ 26 public function has($key) 27 { 28 return apc_exists($key); 29 } 30 31 /** 32 * @see CacheInterface::get() 33 */ 34 public function get($key) 35 { 36 $value = apc_fetch($key, $success); 37 38 if (!$success) { 39 throw new \RuntimeException('There is no cached value for '.$key); 40 } 41 42 return $value; 43 } 44 45 /** 46 * @see CacheInterface::set() 47 */ 48 public function set($key, $value) 49 { 50 $store = apc_store($key, $value, $this->ttl); 51 52 if (!$store) { 53 throw new \RuntimeException('Unable to store "'.$key.'" for '.$this->ttl.' seconds.'); 54 } 55 56 return $store; 57 } 58 59 /** 60 * @see CacheInterface::remove() 61 */ 62 public function remove($key) 63 { 64 return apc_delete($key); 65 } 66} 67