mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-04 01:01:41 +09:00
Provide incr() and decr() as static methods of Cache class
This commit is contained in:
parent
c275702fbf
commit
02b2d54275
2 changed files with 54 additions and 8 deletions
|
|
@ -236,7 +236,7 @@ class Cache
|
|||
* @param string $key
|
||||
* @return bool
|
||||
*/
|
||||
public static function delete($key)
|
||||
public static function delete(string $key): bool
|
||||
{
|
||||
if (self::$_driver !== null)
|
||||
{
|
||||
|
|
@ -256,7 +256,7 @@ class Cache
|
|||
* @param string $key
|
||||
* @return bool
|
||||
*/
|
||||
public static function exists($key)
|
||||
public static function exists(string $key): bool
|
||||
{
|
||||
if (self::$_driver !== null)
|
||||
{
|
||||
|
|
@ -268,6 +268,50 @@ class Cache
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Increase the value of a key by $amount.
|
||||
*
|
||||
* If the key does not exist, this method assumes that the current value is zero.
|
||||
* This method returns the new value, or -1 on failure.
|
||||
*
|
||||
* @param string $key
|
||||
* @param int $amount (optional)
|
||||
* @return int
|
||||
*/
|
||||
public static function incr(string $key, int $amount = 1): int
|
||||
{
|
||||
if (self::$_driver !== null)
|
||||
{
|
||||
return self::$_driver->incr(self::getRealKey($key), $amount);
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Decrease the value of a key by $amount.
|
||||
*
|
||||
* If the key does not exist, this method assumes that the current value is zero.
|
||||
* This method returns the new value, or -1 on failure.
|
||||
*
|
||||
* @param string $key
|
||||
* @param int $amount (optional)
|
||||
* @return int
|
||||
*/
|
||||
public static function decr(string $key, int $amount = 1): int
|
||||
{
|
||||
if (self::$_driver !== null)
|
||||
{
|
||||
return self::$_driver->decr(self::getRealKey($key), $amount);
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear a group of keys from the cache.
|
||||
*
|
||||
|
|
@ -276,7 +320,7 @@ class Cache
|
|||
* @param string $group_name
|
||||
* @return bool
|
||||
*/
|
||||
public static function clearGroup($group_name)
|
||||
public static function clearGroup(string $group_name): bool
|
||||
{
|
||||
if (self::$_driver !== null)
|
||||
{
|
||||
|
|
@ -297,7 +341,7 @@ class Cache
|
|||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function clearAll()
|
||||
public static function clearAll(): bool
|
||||
{
|
||||
if (self::$_driver !== null)
|
||||
{
|
||||
|
|
@ -315,7 +359,7 @@ class Cache
|
|||
* @param string $group_name
|
||||
* @return int
|
||||
*/
|
||||
public static function getGroupVersion($group_name)
|
||||
public static function getGroupVersion(string $group_name): int
|
||||
{
|
||||
if (isset(self::$_group_versions[$group_name]))
|
||||
{
|
||||
|
|
@ -340,7 +384,7 @@ class Cache
|
|||
* @param string $key
|
||||
* @return string
|
||||
*/
|
||||
public static function getRealKey($key)
|
||||
public static function getRealKey(string $key): string
|
||||
{
|
||||
if (preg_match('/^([^:]+):(.+)$/i', $key, $matches))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -111,9 +111,11 @@ class CacheTest extends \Codeception\TestCase\Test
|
|||
$prefix = Rhymix\Framework\Cache::getPrefix();
|
||||
|
||||
$this->assertEquals(1, Rhymix\Framework\Cache::getDriverInstance()->incr($prefix . 'foo', 1));
|
||||
$this->assertEquals(8, Rhymix\Framework\Cache::getDriverInstance()->incr($prefix . 'foo', 7));
|
||||
$this->assertEquals(-7, Rhymix\Framework\Cache::decr('foo', 15));
|
||||
$this->assertEquals(45, Rhymix\Framework\Cache::getDriverInstance()->incr($prefix . 'bar', 3));
|
||||
$this->assertEquals(-1, Rhymix\Framework\Cache::getDriverInstance()->decr($prefix . 'foo', 2));
|
||||
$this->assertEquals(49, Rhymix\Framework\Cache::getDriverInstance()->decr($prefix . 'bar', -4));
|
||||
$this->assertEquals(60, Rhymix\Framework\Cache::incr('bar', 15));
|
||||
$this->assertEquals(20, Rhymix\Framework\Cache::getDriverInstance()->incr($prefix . 'bar', -40));
|
||||
}
|
||||
|
||||
public function testClearAll()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue