mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-07 10:41:40 +09:00
Make all cache drivers singleton instances
This commit is contained in:
parent
9b71df6a01
commit
2227e0d278
10 changed files with 164 additions and 40 deletions
|
|
@ -64,12 +64,12 @@ class Cache
|
|||
|
||||
if ($class_name && class_exists($class_name) && $class_name::isSupported())
|
||||
{
|
||||
self::$_driver = new $class_name($config);
|
||||
self::$_driver = $class_name::getInstance($config);
|
||||
self::$_driver_name = strtolower($driver_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
self::$_driver = new Drivers\Cache\Dummy(array());
|
||||
self::$_driver = Drivers\Cache\Dummy::getInstance(array());
|
||||
self::$_driver_name = 'dummy';
|
||||
}
|
||||
|
||||
|
|
@ -133,7 +133,7 @@ class Cache
|
|||
$class_name = '\\Rhymix\\Framework\\Drivers\\Cache\\' . $name;
|
||||
if (class_exists($class_name) && $class_name::isSupported() && $class_name::validateSettings($config))
|
||||
{
|
||||
return new $class_name($config);
|
||||
return $class_name::getInstance($config);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
23
common/framework/drivers/cache/apc.php
vendored
23
common/framework/drivers/cache/apc.php
vendored
|
|
@ -12,15 +12,32 @@ class APC implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
*/
|
||||
public $prefix = true;
|
||||
|
||||
/**
|
||||
* The singleton instance is stored here.
|
||||
*/
|
||||
protected static $_instance = null;
|
||||
|
||||
/**
|
||||
* Direct invocation of the constructor is not permitted.
|
||||
*/
|
||||
protected function __construct()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new instance of the current cache driver, using the given settings.
|
||||
*
|
||||
* @param array $config
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(array $config)
|
||||
public static function getInstance(array $config)
|
||||
{
|
||||
|
||||
if (self::$_instance === null)
|
||||
{
|
||||
self::$_instance = new self();
|
||||
}
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -30,7 +47,7 @@ class APC implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isSupported()
|
||||
public static function isSupported()
|
||||
{
|
||||
return function_exists('apc_exists');
|
||||
}
|
||||
|
|
|
|||
7
common/framework/drivers/cache/dummy.php
vendored
7
common/framework/drivers/cache/dummy.php
vendored
|
|
@ -10,7 +10,12 @@ class Dummy extends File implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
/**
|
||||
* Set this flag to false to disable cache prefixes.
|
||||
*/
|
||||
public $prefix = true;
|
||||
public $prefix = false;
|
||||
|
||||
/**
|
||||
* The singleton instance is stored here.
|
||||
*/
|
||||
protected static $_instance = null;
|
||||
|
||||
/**
|
||||
* Dummy data is stored here.
|
||||
|
|
|
|||
29
common/framework/drivers/cache/file.php
vendored
29
common/framework/drivers/cache/file.php
vendored
|
|
@ -14,18 +14,20 @@ class File implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
*/
|
||||
public $prefix = false;
|
||||
|
||||
/**
|
||||
* The singleton instance is stored here.
|
||||
*/
|
||||
protected static $_instance = null;
|
||||
|
||||
/**
|
||||
* The cache directory.
|
||||
*/
|
||||
protected $_dir;
|
||||
|
||||
/**
|
||||
* Create a new instance of the current cache driver, using the given settings.
|
||||
*
|
||||
* @param array $config
|
||||
* @return void
|
||||
* Direct invocation of the constructor is not permitted.
|
||||
*/
|
||||
public function __construct(array $config)
|
||||
protected function __construct(array $config)
|
||||
{
|
||||
$this->_dir = \RX_BASEDIR . 'files/cache/store';
|
||||
if (!Storage::isDirectory($this->_dir))
|
||||
|
|
@ -34,6 +36,21 @@ class File implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new instance of the current cache driver, using the given settings.
|
||||
*
|
||||
* @param array $config
|
||||
* @return void
|
||||
*/
|
||||
public static function getInstance(array $config)
|
||||
{
|
||||
if (static::$_instance === null)
|
||||
{
|
||||
static::$_instance = new static($config);
|
||||
}
|
||||
return static::$_instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the current cache driver is supported on this server.
|
||||
*
|
||||
|
|
@ -41,7 +58,7 @@ class File implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isSupported()
|
||||
public static function isSupported()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
29
common/framework/drivers/cache/memcached.php
vendored
29
common/framework/drivers/cache/memcached.php
vendored
|
|
@ -12,6 +12,11 @@ class Memcached implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
*/
|
||||
public $prefix = true;
|
||||
|
||||
/**
|
||||
* The singleton instance is stored here.
|
||||
*/
|
||||
protected static $_instance = null;
|
||||
|
||||
/**
|
||||
* The Memcached connection is stored here.
|
||||
*/
|
||||
|
|
@ -19,12 +24,9 @@ class Memcached implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
protected $_ext = null;
|
||||
|
||||
/**
|
||||
* Create a new instance of the current cache driver, using the given settings.
|
||||
*
|
||||
* @param array $config
|
||||
* @return void
|
||||
* Direct invocation of the constructor is not permitted.
|
||||
*/
|
||||
public function __construct(array $config)
|
||||
protected function __construct(array $config)
|
||||
{
|
||||
if (class_exists('\\Memcached', false))
|
||||
{
|
||||
|
|
@ -51,6 +53,21 @@ class Memcached implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new instance of the current cache driver, using the given settings.
|
||||
*
|
||||
* @param array $config
|
||||
* @return void
|
||||
*/
|
||||
public static function getInstance(array $config)
|
||||
{
|
||||
if (self::$_instance === null)
|
||||
{
|
||||
self::$_instance = new self($config);
|
||||
}
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the current cache driver is supported on this server.
|
||||
*
|
||||
|
|
@ -58,7 +75,7 @@ class Memcached implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isSupported()
|
||||
public static function isSupported()
|
||||
{
|
||||
return class_exists('\\Memcached', false) || class_exists('\\Memcache', false);
|
||||
}
|
||||
|
|
|
|||
29
common/framework/drivers/cache/redis.php
vendored
29
common/framework/drivers/cache/redis.php
vendored
|
|
@ -12,18 +12,20 @@ class Redis implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
*/
|
||||
public $prefix = true;
|
||||
|
||||
/**
|
||||
* The singleton instance is stored here.
|
||||
*/
|
||||
protected static $_instance = null;
|
||||
|
||||
/**
|
||||
* The Redis connection is stored here.
|
||||
*/
|
||||
protected $_conn = null;
|
||||
|
||||
/**
|
||||
* Create a new instance of the current cache driver, using the given settings.
|
||||
*
|
||||
* @param array $config
|
||||
* @return void
|
||||
* Direct invocation of the constructor is not permitted.
|
||||
*/
|
||||
public function __construct(array $config)
|
||||
protected function __construct(array $config)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
@ -53,6 +55,21 @@ class Redis implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new instance of the current cache driver, using the given settings.
|
||||
*
|
||||
* @param array $config
|
||||
* @return void
|
||||
*/
|
||||
public static function getInstance(array $config)
|
||||
{
|
||||
if (self::$_instance === null)
|
||||
{
|
||||
self::$_instance = new self($config);
|
||||
}
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the current cache driver is supported on this server.
|
||||
*
|
||||
|
|
@ -60,7 +77,7 @@ class Redis implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isSupported()
|
||||
public static function isSupported()
|
||||
{
|
||||
return class_exists('\\Redis', false);
|
||||
}
|
||||
|
|
|
|||
31
common/framework/drivers/cache/sqlite.php
vendored
31
common/framework/drivers/cache/sqlite.php
vendored
|
|
@ -14,6 +14,11 @@ class SQLite implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
*/
|
||||
public $prefix = false;
|
||||
|
||||
/**
|
||||
* The singleton instance is stored here.
|
||||
*/
|
||||
protected static $_instance = null;
|
||||
|
||||
/**
|
||||
* The database handle and prepared statements are stored here.
|
||||
*/
|
||||
|
|
@ -21,12 +26,9 @@ class SQLite implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
protected $_ps = array();
|
||||
|
||||
/**
|
||||
* Create a new instance of the current cache driver, using the given settings.
|
||||
*
|
||||
* @param array $config
|
||||
* @return void
|
||||
* Direct invocation of the constructor is not permitted.
|
||||
*/
|
||||
public function __construct(array $config)
|
||||
protected function __construct()
|
||||
{
|
||||
$dir = \RX_BASEDIR . 'files/cache/store';
|
||||
if (!Storage::isDirectory($dir))
|
||||
|
|
@ -63,6 +65,21 @@ class SQLite implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
$this->_dbh->exec('PRAGMA synchronous = OFF');
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new instance of the current cache driver, using the given settings.
|
||||
*
|
||||
* @param array $config
|
||||
* @return void
|
||||
*/
|
||||
public static function getInstance(array $config)
|
||||
{
|
||||
if (self::$_instance === null)
|
||||
{
|
||||
self::$_instance = new self();
|
||||
}
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the current cache driver is supported on this server.
|
||||
*
|
||||
|
|
@ -70,9 +87,9 @@ class SQLite implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isSupported()
|
||||
public static function isSupported()
|
||||
{
|
||||
return class_exists('\\SQLite3', false) && config('crypto.authentication_key');
|
||||
return class_exists('\\SQLite3', false) && config('crypto.authentication_key') !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
23
common/framework/drivers/cache/wincache.php
vendored
23
common/framework/drivers/cache/wincache.php
vendored
|
|
@ -12,15 +12,32 @@ class WinCache implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
*/
|
||||
public $prefix = true;
|
||||
|
||||
/**
|
||||
* The singleton instance is stored here.
|
||||
*/
|
||||
protected static $_instance = null;
|
||||
|
||||
/**
|
||||
* Direct invocation of the constructor is not permitted.
|
||||
*/
|
||||
protected function __construct()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new instance of the current cache driver, using the given settings.
|
||||
*
|
||||
* @param array $config
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(array $config)
|
||||
public static function getInstance(array $config)
|
||||
{
|
||||
|
||||
if (self::$_instance === null)
|
||||
{
|
||||
self::$_instance = new self();
|
||||
}
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -30,7 +47,7 @@ class WinCache implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isSupported()
|
||||
public static function isSupported()
|
||||
{
|
||||
return function_exists('wincache_ucache_get');
|
||||
}
|
||||
|
|
|
|||
23
common/framework/drivers/cache/xcache.php
vendored
23
common/framework/drivers/cache/xcache.php
vendored
|
|
@ -12,15 +12,32 @@ class XCache implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
*/
|
||||
public $prefix = true;
|
||||
|
||||
/**
|
||||
* The singleton instance is stored here.
|
||||
*/
|
||||
protected static $_instance = null;
|
||||
|
||||
/**
|
||||
* Direct invocation of the constructor is not permitted.
|
||||
*/
|
||||
protected function __construct()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new instance of the current cache driver, using the given settings.
|
||||
*
|
||||
* @param array $config
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(array $config)
|
||||
public static function getInstance(array $config)
|
||||
{
|
||||
|
||||
if (self::$_instance === null)
|
||||
{
|
||||
self::$_instance = new self();
|
||||
}
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -30,7 +47,7 @@ class XCache implements \Rhymix\Framework\Drivers\CacheInterface
|
|||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isSupported()
|
||||
public static function isSupported()
|
||||
{
|
||||
return function_exists('xcache_get');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ interface CacheInterface
|
|||
* @param array $config
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(array $config);
|
||||
public static function getInstance(array $config);
|
||||
|
||||
/**
|
||||
* Check if the current cache driver is supported on this server.
|
||||
|
|
@ -22,7 +22,7 @@ interface CacheInterface
|
|||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isSupported();
|
||||
public static function isSupported();
|
||||
|
||||
/**
|
||||
* Validate cache settings.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue