115 lines
2.7 KiB
PHP
115 lines
2.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @author Tassos Marinos <info@tassos.gr>
|
|
* @link https://www.tassos.gr
|
|
* @copyright Copyright © 2024 Tassos All Rights Reserved
|
|
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
|
|
*/
|
|
|
|
/**
|
|
* This file is deprecated. Use CacheManager instead of Cache.
|
|
*/
|
|
|
|
namespace NRFramework;
|
|
|
|
defined('_JEXEC') or die;
|
|
|
|
use \NRFramework\CacheManager;
|
|
use \Joomla\CMS\Factory;
|
|
|
|
/**
|
|
* Caching mechanism
|
|
*/
|
|
class Cache
|
|
{
|
|
/**
|
|
* Check if has alrady exists in memory
|
|
*
|
|
* @param string $hash The hash string
|
|
*
|
|
* @return boolean
|
|
*/
|
|
static public function has($hash)
|
|
{
|
|
$cache = CacheManager::getInstance(Factory::getCache('tassos', ''));
|
|
return $cache->has($hash);
|
|
}
|
|
|
|
/**
|
|
* Returns hash value
|
|
*
|
|
* @param string $hash The hash string
|
|
* @param string $clone Why the hell we clone objects here?
|
|
*
|
|
* @return mixed False on error, Object on success
|
|
*/
|
|
static public function get($hash, $clone = true)
|
|
{
|
|
$cache = CacheManager::getInstance(Factory::getCache('tassos', ''));
|
|
return $cache->get($hash, $clone);
|
|
}
|
|
|
|
/**
|
|
* Sets on memory the hash value
|
|
*
|
|
* @param string $hash The hash string
|
|
* @param mixed $data Can be string or object
|
|
*
|
|
* @return mixed
|
|
*/
|
|
static public function set($hash, $data)
|
|
{
|
|
$cache = CacheManager::getInstance(Factory::getCache('tassos', ''));
|
|
return $cache->set($hash, $data);
|
|
}
|
|
|
|
/**
|
|
* Reads hash value from memory or file
|
|
*
|
|
* @param string $hash The hash string
|
|
* @param boolean $force If true, the filesystem will be used as well on the /cache/ folder
|
|
*
|
|
* @return mixed The hash object valuw
|
|
*/
|
|
static public function read($hash, $force = false)
|
|
{
|
|
$cache = CacheManager::getInstance(Factory::getCache('tassos', ''));
|
|
return $cache->read($hash, $force);
|
|
}
|
|
|
|
/**
|
|
* Writes hash value in cache folder
|
|
*
|
|
* @param string $hash The hash string
|
|
* @param mixed $data Can be string or object
|
|
* @param integer $ttl Expiration duration in milliseconds
|
|
*
|
|
* @return mixed The hash object value
|
|
*/
|
|
static public function write($hash, $data, $ttl = 0)
|
|
{
|
|
$cache = CacheManager::getInstance(Factory::getCache('tassos', ''));
|
|
return $cache->write($hash, $data, $ttl);
|
|
}
|
|
|
|
/**
|
|
* Memoize a function to run once per runtime
|
|
*
|
|
* @param string $key The key to store the result of the callback
|
|
* @param callback $callback The callable anonymous function to call
|
|
*
|
|
* @return mixed
|
|
*/
|
|
static public function memo($key, callable $callback)
|
|
{
|
|
$hash = md5($key);
|
|
|
|
if (Cache::has($hash))
|
|
{
|
|
return Cache::get($hash);
|
|
}
|
|
|
|
return Cache::set($hash, $callback());
|
|
}
|
|
} |