$name)); } if (is_array($config)) { // Append the default configuration options $config += Kohana::config('cache.default'); } else { // Load the default group $config = Kohana::config('cache.default'); } // Cache the config in the object $this->config = $config; // Set driver name $driver = 'Cache_'.ucfirst($this->config['driver']).'_Driver'; // Load the driver if ( ! Kohana::auto_load($driver)) throw new Kohana_Exception('The :driver: driver for the :class: library could not be found', array(':driver:' => $this->config['driver'], ':class:' => get_class($this))); // Initialize the driver $this->driver = new $driver($this->config['params']); // Validate the driver if ( ! ($this->driver instanceof Cache_Driver)) throw new Kohana_Exception('The :driver: driver for the :library: library must implement the :interface: interface', array(':driver:' => $this->config['driver'], ':library:' => get_class($this), ':interface:' => 'Cache_Driver')); Kohana_Log::add('debug', 'Cache Library initialized'); } /** * Set cache items */ public function set($key, $value = NULL, $tags = NULL, $lifetime = NULL) { if ($lifetime === NULL) { $lifetime = $this->config['lifetime']; } if ( ! is_array($key)) { $key = array($key => $value); } return $this->driver->set($key, $tags, $lifetime); } /** * Get a cache items by key */ public function get($keys) { $single = FALSE; if ( ! is_array($keys)) { $keys = array($keys); $single = TRUE; } return $this->driver->get($keys, $single); } /** * Get cache items by tags */ public function get_tag($tags) { if ( ! is_array($tags)) { $tags = array($tags); } return $this->driver->get_tag($tags); } /** * Delete cache item by key */ public function delete($keys) { if ( ! is_array($keys)) { $keys = array($keys); } return $this->driver->delete($keys); } /** * Delete cache items by tag */ public function delete_tag($tags) { if ( ! is_array($tags)) { $tags = array($tags); } return $this->driver->delete_tag($tags); } /** * Empty the cache */ public function delete_all() { return $this->driver->delete_all(); } } // End Cache Library