Adds a caching layer to a loader.
A cached formula loader is a composition of a formula loader and a cache.
@author Kris Wallsmith <kris.wallsmith@gmail.com>
Expanded class hierarchy of CachedFormulaLoader
class CachedFormulaLoader implements FormulaLoaderInterface {
private $loader;
private $configCache;
private $debug;
/**
* Constructor.
*
* When the loader is in debug mode it will ensure the cached formulae
* are fresh before returning them.
*
* @param FormulaLoaderInterface $loader A formula loader
* @param ConfigCache $configCache A config cache
* @param Boolean $debug The debug mode
*/
public function __construct(FormulaLoaderInterface $loader, ConfigCache $configCache, $debug = false) {
$this->loader = $loader;
$this->configCache = $configCache;
$this->debug = $debug;
}
public function load(ResourceInterface $resources) {
if (!$resources instanceof IteratorResourceInterface) {
$resources = array(
$resources,
);
}
$formulae = array();
foreach ($resources as $resource) {
$id = (string) $resource;
if (!$this->configCache
->has($id) || $this->debug && !$resource
->isFresh($this->configCache
->getTimestamp($id))) {
$formulae += $this->loader
->load($resource);
$this->configCache
->set($id, $formulae);
}
else {
$formulae += $this->configCache
->get($id);
}
}
return $formulae;
}
}
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CachedFormulaLoader:: |
private | property | ||
CachedFormulaLoader:: |
private | property | ||
CachedFormulaLoader:: |
private | property | ||
CachedFormulaLoader:: |
public | function |
Loads formulae from a resource. Overrides FormulaLoaderInterface:: |
|
CachedFormulaLoader:: |
public | function | Constructor. |