settings = array_merge( array('prefix' => 'cake_', 'duration' => 3600, 'probability' => 100), $this->settings, $settings ); if (!is_numeric($this->settings['duration'])) { $this->settings['duration'] = strtotime($this->settings['duration']) - time(); } return true; } /** * Garbage collection * * Permanently remove all expired and deleted data * @return void */ public function gc() { } /** * Write value for a key into cache * * @param string $key Identifier for the data * @param mixed $value Data to be cached * @param mixed $duration How long to cache for. * @return boolean True if the data was successfully cached, false on failure */ abstract public function write($key, $value, $duration); /** * Read a key from the cache * * @param string $key Identifier for the data * @return mixed The cached data, or false if the data doesn't exist, has expired, or if there was an error fetching it */ abstract public function read($key); /** * Increment a number under the key and return incremented value * * @param string $key Identifier for the data * @param integer $offset How much to add * @return New incremented value, false otherwise */ abstract public function increment($key, $offset = 1); /** * Decrement a number under the key and return decremented value * * @param string $key Identifier for the data * @param integer $offset How much to subtract * @return New incremented value, false otherwise */ abstract public function decrement($key, $offset = 1); /** * Delete a key from the cache * * @param string $key Identifier for the data * @return boolean True if the value was successfully deleted, false if it didn't exist or couldn't be removed */ abstract public function delete($key); /** * Delete all keys from the cache * * @param boolean $check if true will check expiration, otherwise delete all * @return boolean True if the cache was successfully cleared, false otherwise */ abstract public function clear($check); /** * Cache Engine settings * * @return array settings */ public function settings() { return $this->settings; } /** * Generates a safe key for use with cache engine storage engines. * * @param string $key the key passed over * @return mixed string $key or false */ public function key($key) { if (empty($key)) { return false; } $key = Inflector::underscore(str_replace(array(DS, '/', '.'), '_', strval($key))); return $key; } }