* @copyright 2010 Luracast * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link http://luracast.com/products/restler/ * @version 3.0.0rc5 */ class HumanReadableCache implements iCache { /** * @var string path of the folder to hold cache files */ public static $cacheDir; public function __construct() { if (is_null(self::$cacheDir)) { self::$cacheDir = Defaults::$cacheDirectory; } } /** * store data in the cache * * @param string $name * @param mixed $data * * @throws \Exception * @return boolean true if successful */ public function set($name, $data) { if (is_array($data)) { $s = '$o = array();' . PHP_EOL . PHP_EOL; $s .= '// ** THIS IS AN AUTO GENERATED FILE.' . ' DO NOT EDIT MANUALLY ** '; foreach ($data as $key => $value) { $s .= PHP_EOL . PHP_EOL . "//==================== $key ====================" . PHP_EOL . PHP_EOL; if (is_array($value)) { $s .= '$o[\'' . $key . '\'] = array();'; foreach ($value as $ke => $va) { $s .= PHP_EOL . PHP_EOL . "//==== $key $ke ====" . PHP_EOL . PHP_EOL; $s .= '$o[\'' . $key . '\'][\'' . $ke . '\'] = ' . str_replace(' ', ' ', var_export($va, true)) . ';'; } } else { $s .= '$o[\'' . $key . '\'] = ' . var_export($value, true) . ';'; } } $s .= PHP_EOL . 'return $o;'; } else { $s = 'return ' . var_export($data, true) . ';'; } $file = $this->_file($name); $r = @file_put_contents($file, "throwException(); } return $r; } /** * retrieve data from the cache * * @param string $name * @param bool $ignoreErrors * * @return mixed */ public function get($name, $ignoreErrors = false) { $file = $this->_file($name); if (file_exists($file)) { return include($file); } } /** * delete data from the cache * * @param string $name * @param bool $ignoreErrors * * @return boolean true if successful */ public function clear($name, $ignoreErrors = false) { return @unlink($this->_file($name)); } /** * check if the given name is cached * * @param string $name * * @return boolean true if cached */ public function isCached($name) { return file_exists($this->_file($name)); } private function _file($name) { return self::$cacheDir . '/' . $name . '.php'; } private function throwException() { throw new \Exception( 'The cache directory `' . self::$cacheDir . '` should exist with write permission.' ); } }