diff options
Diffstat (limited to 'caches/FileCache.php')
-rw-r--r-- | caches/FileCache.php | 153 |
1 files changed, 74 insertions, 79 deletions
diff --git a/caches/FileCache.php b/caches/FileCache.php index b6e04c37..a8ab88d7 100644 --- a/caches/FileCache.php +++ b/caches/FileCache.php @@ -2,93 +2,88 @@ /** * Cache with file system */ -class FileCache extends CacheAbstract{ - protected $cacheDirCreated; // boolean to avoid always chck dir cache existance +class FileCache extends CacheAbstract { + protected $cacheDirCreated; // boolean to avoid always chck dir cache existance - public function loadData(){ - $this->isPrepareCache(); + public function loadData(){ + $this->isPrepareCache(); + $datas = unserialize(file_get_contents($this->getCacheFile())); + return $datas; + } - $datas = unserialize(file_get_contents($this->getCacheFile())); + public function saveData($datas){ + $this->isPrepareCache(); - return $datas; - } + //Re-encode datas to UTF-8 + //$datas = Cache::utf8_encode_deep($datas); + $writeStream = file_put_contents($this->getCacheFile(), serialize($datas)); - public function saveData($datas){ - $this->isPrepareCache(); + if(!$writeStream) { + throw new \Exception("Cannot write the cache... Do you have the right permissions ?"); + } - //Re-encode datas to UTF-8 - //$datas = Cache::utf8_encode_deep($datas); - - $writeStream = file_put_contents($this->getCacheFile(), serialize($datas)); + return $this; + } - if(!$writeStream) { + public function getTime(){ + $this->isPrepareCache(); - throw new \Exception("Cannot write the cache... Do you have the right permissions ?"); + $cacheFile = $this->getCacheFile(); + if(file_exists($cacheFile)){ + return filemtime($cacheFile); + } + + return false; + } + + /** + * Cache is prepared ? + * Note : Cache name is based on request information, then cache must be prepare before use + * @return \Exception|true + */ + protected function isPrepareCache(){ + if(is_null($this->param)){ + throw new \Exception('Please feed "prepare" method before try to load'); + } + + return true; + } + + /** + * Return cache path (and create if not exist) + * @return string Cache path + */ + protected function getCachePath(){ + $cacheDir = __DIR__ . '/../cache/'; // FIXME : configuration ? + + // FIXME : implement recursive dir creation + if(is_null($this->cacheDirCreated) && !is_dir($cacheDir)){ + $this->cacheDirCreated = true; + mkdir($cacheDir,0705); + chmod($cacheDir,0705); } - return $this; - } - - public function getTime(){ - $this->isPrepareCache(); - - $cacheFile = $this->getCacheFile(); - if( file_exists($cacheFile) ){ - return filemtime($cacheFile); - } - - return false; - } - - /** - * Cache is prepared ? - * Note : Cache name is based on request information, then cache must be prepare before use - * @return \Exception|true - */ - protected function isPrepareCache(){ - if( is_null($this->param) ){ - throw new \Exception('Please feed "prepare" method before try to load'); - } - - return true; - } - - /** - * Return cache path (and create if not exist) - * @return string Cache path - */ - protected function getCachePath(){ - $cacheDir = __DIR__ . '/../cache/'; // FIXME : configuration ? - - // FIXME : implement recursive dir creation - if( is_null($this->cacheDirCreated) && !is_dir($cacheDir) ){ - $this->cacheDirCreated = true; - - mkdir($cacheDir,0705); - chmod($cacheDir,0705); - } - - return $cacheDir; - } - - /** - * Get the file name use for cache store - * @return string Path to the file cache - */ - protected function getCacheFile(){ - return $this->getCachePath() . $this->getCacheName(); - } - - /** - * Determines file name for store the cache - * return string - */ - protected function getCacheName(){ - $this->isPrepareCache(); - - $stringToEncode = $_SERVER['REQUEST_URI'] . http_build_query($this->param); - $stringToEncode = preg_replace('/(\?|&)format=[^&]*/i', '$1', $stringToEncode); - return hash('sha1', $stringToEncode) . '.cache'; - } + return $cacheDir; + } + + /** + * Get the file name use for cache store + * @return string Path to the file cache + */ + protected function getCacheFile(){ + return $this->getCachePath() . $this->getCacheName(); + } + + /** + * Determines file name for store the cache + * return string + */ + protected function getCacheName(){ + $this->isPrepareCache(); + + $stringToEncode = $_SERVER['REQUEST_URI'] . http_build_query($this->param); + $stringToEncode = preg_replace('/(\?|&)format=[^&]*/i', '$1', $stringToEncode); + return hash('sha1', $stringToEncode) . '.cache'; + } } |