_file = $file . self::EXT; $this->setExpiration(config('cache_lifespan')); } /** * Sets the cache expiration limit (IMPORTANT NOTE: seconds, NOT ms!). * * @param integer $span * @access public * @return void **/ public function setExpiration($span) { $this->_lifespan = $span; } /** * Set the content you'd like to cache. * * @param mixed $content * @access public * @return void **/ public function setContent($content) { switch (strtolower(gettype($content))) { case 'array': $this->_content = json_encode($content); break; default: $this->_content = $content; break; } } /** * Validates whether it is time to refresh the cache data or not. * * @access public * @return boolean **/ public function hasExpired() { if (is_file($this->_file) && time() < filemtime($this->_file) + $this->_lifespan) { return false; } return true; } /** * Returns remaining time before scoreboard will update itself. * * @access public * @return integer **/ public function remainingTime() { $remaining = 0; if (!$this->hasExpired()) { $remaining = (filemtime($this->_file) + $this->_lifespan) - time(); } return $remaining; } /** * Saves the content into its appropriate cache file. * * @access public * @return void **/ public function save() { $handle = fopen($this->_file, 'w'); fwrite($handle, $this->_content); fclose($handle); } /** * Loads the content from a specified cache file. * * @access public * @return mixed **/ public function load() { if (!is_file($this->_file)) { return false; } ob_start(); include_once($this->_file); $content = ob_get_clean(); if (!isset($content) && strlen($content) == 0) { return false; } if ($content = json_decode($content, true)) { return (array) $content; } else { return $content; } } }