/** * Load a settings file. * Can auto detect file type from the file's extention. * @param string $filename file to load. * @param string|null $type The type of file being loaded. * @param boolean $array Return data as an array or object. * @return array|stdClass Data from file. */ public function load($filename, $type = null, $array = false) { if ($type == null) { $type = strtoupper(pathinfo($filename, PATHINFO_EXTENSION)); } $data = NULL; if (file_exists($filename)) { switch ($type) { case 'JSON': $io = new IO(); $data = $io->read($filename); if ($data === false) { return null; } $data = json_decode($data, $array); break; case 'INI': $data = $array ? parse_ini_file($filename, true) : (object) parse_ini_file($filename, true); if ($data === false) { $data = NULL; } break; default: $data = NULL; } } return $data; }
function get($key, $clearStaticKey = false) { static $data; // 提供给 SET 进行通知,清除静态缓存数据 if ($clearStaticKey) { unset($data[$key]); return false; } $p = $this->_getSavePath($key); if (isset($data[$key]) && file_exists($p['p'])) { return $data[$key]; } if (!file_exists($p['p'])) { return false; } $content = IO::read($p['p']); $content = str_replace("<?php die('Permission denied');?>\n", "", $content); $d = unserialize($content); $d = $d[$key]; if (empty($d['ttl']) || $d['timeout'] > TIMESTAMP) { $data[$key] = is_array($d['data']) ? $d['data'] : rawurldecode($d['data']); return $data[$key]; } return false; }
/** * Load cache file * @param string $name Cache name */ public static function getCache($name) { return new Cache($name, IO::read(self::getFullpathFromName($name))); }