123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- <?php namespace System;
- class Cache {
-
- public static $drivers = array();
-
- public static function driver($driver = null)
- {
- if (is_null($driver))
- {
- $driver = Config::get('cache.driver');
- }
- if ( ! array_key_exists($driver, static::$drivers))
- {
- switch ($driver)
- {
- case 'file':
- return static::$drivers[$driver] = new Cache\File;
- case 'memcached':
- return static::$drivers[$driver] = new Cache\Memcached;
- case 'apc':
- return static::$drivers[$driver] = new Cache\APC;
- default:
- throw new \Exception("Cache driver [$driver] is not supported.");
- }
- }
- return static::$drivers[$driver];
- }
-
-
- public static function get($key, $default = null, $driver = null)
- {
- if (is_null($driver))
- {
- $driver = Config::get('cache.driver');
- }
- if (is_null($item = static::driver($driver)->get($key)))
- {
- return is_callable($default) ? call_user_func($default) : $default;
- }
- return $item;
- }
-
- public static function remember($key, $default, $minutes, $driver = null)
- {
- if ( ! is_null($item = static::get($key, null, $driver))) return $item;
- $default = is_callable($default) ? call_user_func($default) : $default;
- static::driver($driver)->put($key, $default, $minutes);
- return $default;
- }
-
- public static function __callStatic($method, $parameters)
- {
- return call_user_func_array(array(static::driver(), $method), $parameters);
- }
- }
|