488 lines
12 KiB
PHP
488 lines
12 KiB
PHP
<?php
|
|
/**
|
|
*
|
|
* This file is part of phpFastCache.
|
|
*
|
|
* @license MIT License (MIT)
|
|
*
|
|
* For full copyright and license information, please see the docs/CREDITS.txt file.
|
|
*
|
|
* @author Khoa Bui (khoaofgod) <khoaofgod@gmail.com> http://www.phpfastcache.com
|
|
* @author Georges.L (Geolim4) <contact@geolim4.com>
|
|
*
|
|
*/
|
|
|
|
namespace phpFastCache\Helper;
|
|
|
|
use phpFastCache\CacheManager;
|
|
use phpFastCache\Core\Pool\ExtendedCacheItemPoolInterface;
|
|
use phpFastCache\EventManager;
|
|
use Psr\Cache\CacheItemInterface;
|
|
|
|
/**
|
|
* Class ActOnAll
|
|
* @package phpFastCache\Helper
|
|
*/
|
|
class ActOnAll implements ExtendedCacheItemPoolInterface
|
|
{
|
|
|
|
/**
|
|
* @var ExtendedCacheItemPoolInterface[]
|
|
*/
|
|
protected $instances = [];
|
|
|
|
/**
|
|
* ActOnAll constructor.
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->instances =& CacheManager::getInternalInstances();
|
|
}
|
|
|
|
/**
|
|
* @return \Closure
|
|
*/
|
|
protected function getGenericCallback()
|
|
{
|
|
return function ($method, $args) {
|
|
$getterMethod = (strpos($method, 'get') === 0);
|
|
$return = false;
|
|
|
|
if ($getterMethod) {
|
|
$return = [];
|
|
}
|
|
|
|
foreach ($this->instances as $instance) {
|
|
$reflectionMethod = new \ReflectionMethod(get_class($instance), $method);
|
|
if ($getterMethod) {
|
|
$return[ $instance->getDriverName() ] = $reflectionMethod->invokeArgs($instance, $args);
|
|
} else {
|
|
$result = $reflectionMethod->invokeArgs($instance, $args);
|
|
if ($result !== false) {
|
|
$return = $result;
|
|
}
|
|
}
|
|
}
|
|
return $return;
|
|
};
|
|
}
|
|
|
|
|
|
/**
|
|
* @param string $key
|
|
* @return mixed
|
|
*/
|
|
public function hasItem($key)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function clear()
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param string $key
|
|
* @return mixed
|
|
*/
|
|
public function deleteItem($key)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $keys
|
|
* @return mixed
|
|
*/
|
|
public function deleteItems(array $keys)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param \Psr\Cache\CacheItemInterface $item
|
|
* @return mixed
|
|
*/
|
|
public function save(CacheItemInterface $item)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param \Psr\Cache\CacheItemInterface $item
|
|
* @return mixed
|
|
*/
|
|
public function saveDeferred(CacheItemInterface $item)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array ...$items
|
|
* @return mixed
|
|
*/
|
|
public function saveMultiple(...$items)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function commit()
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getConfig()
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getConfigOption($optionName)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getDriverName()
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param string $key
|
|
* @return mixed
|
|
*/
|
|
public function getItem($key)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $keys
|
|
* @return mixed
|
|
*/
|
|
public function getItems(array $keys = [])
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $keys
|
|
* @param int $option
|
|
* @param int $depth
|
|
* @return mixed
|
|
*/
|
|
public function getItemsAsJsonString(array $keys = [], $option = 0, $depth = 512)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param \Psr\Cache\CacheItemInterface $item
|
|
* @return mixed
|
|
*/
|
|
public function setItem(CacheItemInterface $item)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getHelp()
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getStats()
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param string $tagName
|
|
* @return mixed
|
|
*/
|
|
public function getItemsByTag($tagName)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $tagNames
|
|
* @return mixed
|
|
*/
|
|
public function getItemsByTags(array $tagNames)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $tagNames
|
|
* @param int $option
|
|
* @param int $depth
|
|
* @return mixed
|
|
*/
|
|
public function getItemsByTagsAsJsonString(array $tagNames, $option = 0, $depth = 512)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param string $tagName
|
|
* @return mixed
|
|
*/
|
|
public function deleteItemsByTag($tagName)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $tagNames
|
|
* @return mixed
|
|
*/
|
|
public function deleteItemsByTags(array $tagNames)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param string $tagName
|
|
* @param int $step
|
|
* @return mixed
|
|
*/
|
|
public function incrementItemsByTag($tagName, $step = 1)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $tagNames
|
|
* @param int $step
|
|
* @return mixed
|
|
*/
|
|
public function incrementItemsByTags(array $tagNames, $step = 1)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param string $tagName
|
|
* @param int $step
|
|
* @return mixed
|
|
*/
|
|
public function decrementItemsByTag($tagName, $step = 1)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $tagNames
|
|
* @param int $step
|
|
* @return mixed
|
|
*/
|
|
public function decrementItemsByTags(array $tagNames, $step = 1)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param string $tagName
|
|
* @param array|string $data
|
|
* @return mixed
|
|
*/
|
|
public function appendItemsByTag($tagName, $data)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $tagNames
|
|
* @param array|string $data
|
|
* @return mixed
|
|
*/
|
|
public function appendItemsByTags(array $tagNames, $data)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param string $tagName
|
|
* @param array|string $data
|
|
* @return mixed
|
|
*/
|
|
public function prependItemsByTag($tagName, $data)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $tagNames
|
|
* @param array|string $data
|
|
* @return mixed
|
|
*/
|
|
public function prependItemsByTags(array $tagNames, $data)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $tagNames
|
|
* @return mixed
|
|
*/
|
|
public function getItemsByTagsAll(array $tagNames)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $tagNames
|
|
* @return mixed
|
|
*/
|
|
public function deleteItemsByTagsAll(array $tagNames)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $tagNames
|
|
* @param int $step
|
|
* @return mixed
|
|
*/
|
|
public function incrementItemsByTagsAll(array $tagNames, $step = 1)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $tagNames
|
|
* @param int $step
|
|
* @return mixed
|
|
*/
|
|
public function decrementItemsByTagsAll(array $tagNames, $step = 1)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $tagNames
|
|
* @param array|string $data
|
|
* @return mixed
|
|
*/
|
|
public function appendItemsByTagsAll(array $tagNames, $data)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param array $tagNames
|
|
* @param array|string $data
|
|
* @return mixed
|
|
*/
|
|
public function prependItemsByTagsAll(array $tagNames, $data)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param \Psr\Cache\CacheItemInterface $item
|
|
* @return mixed
|
|
*/
|
|
public function detachItem(CacheItemInterface $item)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function detachAllItems()
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param \Psr\Cache\CacheItemInterface $item
|
|
* @return mixed
|
|
*/
|
|
public function attachItem(CacheItemInterface $item)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param \Psr\Cache\CacheItemInterface $item
|
|
* @return mixed
|
|
*/
|
|
public function isAttached(CacheItemInterface $item)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
|
|
/**
|
|
* @param \phpFastCache\EventManager $em
|
|
* @return mixed
|
|
*/
|
|
public function setEventManager(EventManager $em)
|
|
{
|
|
$callback = $this->getGenericCallback();
|
|
return $callback(__FUNCTION__, func_get_args());
|
|
}
|
|
} |