You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
3.9 KiB
198 lines
3.9 KiB
<?php namespace Tests\Support\Cache\Handlers;
|
|
|
|
use CodeIgniter\Cache\CacheInterface;
|
|
|
|
class MockHandler implements CacheInterface
|
|
{
|
|
/**
|
|
* Prefixed to all cache names.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $prefix;
|
|
|
|
/**
|
|
* Mock cache storage.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $cache = [];
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
/**
|
|
* Takes care of any handler-specific setup that must be done.
|
|
*/
|
|
public function initialize()
|
|
{
|
|
// Not to see here...
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
/**
|
|
* Attempts to fetch an item from the cache store.
|
|
*
|
|
* @param string $key Cache item name
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function get(string $key)
|
|
{
|
|
$key = $this->prefix . $key;
|
|
|
|
return array_key_exists($key, $this->cache)
|
|
? $this->cache[$key]
|
|
: null;
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
/**
|
|
* Saves an item to the cache store.
|
|
*
|
|
* The $raw parameter is only utilized by Mamcache in order to
|
|
* allow usage of increment() and decrement().
|
|
*
|
|
* @param string $key Cache item name
|
|
* @param $value the data to save
|
|
* @param null $ttl Time To Live, in seconds (default 60)
|
|
* @param boolean $raw Whether to store the raw value.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function save(string $key, $value, int $ttl = 60, bool $raw = false)
|
|
{
|
|
$key = $this->prefix . $key;
|
|
|
|
$this->cache[$key] = $value;
|
|
|
|
return true;
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
/**
|
|
* Deletes a specific item from the cache store.
|
|
*
|
|
* @param string $key Cache item name
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function delete(string $key)
|
|
{
|
|
unset($this->cache[$key]);
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
/**
|
|
* Performs atomic incrementation of a raw stored value.
|
|
*
|
|
* @param string $key Cache ID
|
|
* @param integer $offset Step/value to increase by
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function increment(string $key, int $offset = 1)
|
|
{
|
|
$key = $this->prefix . $key;
|
|
|
|
$data = $this->cache[$key] ?: null;
|
|
|
|
if (empty($data))
|
|
{
|
|
$data = 0;
|
|
}
|
|
elseif (! is_int($data))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return $this->save($key, $data + $offset);
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
/**
|
|
* Performs atomic decrementation of a raw stored value.
|
|
*
|
|
* @param string $key Cache ID
|
|
* @param integer $offset Step/value to increase by
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function decrement(string $key, int $offset = 1)
|
|
{
|
|
$key = $this->prefix . $key;
|
|
|
|
$data = $this->cache[$key] ?: null;
|
|
|
|
if (empty($data))
|
|
{
|
|
$data = 0;
|
|
}
|
|
elseif (! is_int($data))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return $this->save($key, $data - $offset);
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
/**
|
|
* Will delete all items in the entire cache.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function clean()
|
|
{
|
|
$this->cache = [];
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
/**
|
|
* Returns information on the entire cache.
|
|
*
|
|
* The information returned and the structure of the data
|
|
* varies depending on the handler.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function getCacheInfo()
|
|
{
|
|
return [];
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
/**
|
|
* Returns detailed information about the specific item in the cache.
|
|
*
|
|
* @param string $key Cache item name.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function getMetaData(string $key)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
/**
|
|
* Determines if the driver is supported on this system.
|
|
*
|
|
* @return boolean
|
|
*/
|
|
public function isSupported(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
|
|
}
|
|
|