nur-sery/nur_src/b/io/CacheManager.php

44 lines
1.1 KiB
PHP

<?php
namespace nur\b\io;
use nur\A;
/**
* Class CacheManager: un gestionnaire de cache permettant de désactiver la mise
* en cache d'une valeur dans le cadre d'une session.
*
* en effet, si on désactive le cache, il doit être réactivé après que la valeur
* est calculée, pour éviter qu'une valeur soit calculée encore et encore dans
* une session de travail
*/
class CacheManager {
function __construct() {
$this->caches = [];
$this->defaultCache = true;
}
/**
* @var array tableau {id => cache} indiquant si l'élément id doit être mis en
* cache
*/
protected $caches;
/**
* @var bool valeur par défaut de cache si la valeur n'est pas trouvée dans
* $caches
*/
protected $defaultCache;
function setNoCache(bool $noCache=true, bool $reset=true): self {
if ($reset) $this->caches = [];
$this->defaultCache = !$noCache;
return $this;
}
function shouldCache(string $id, bool $reset=true): bool {
$cache = A::get($this->caches, $id, $this->defaultCache);
$this->caches[$id] = $reset?: $cache;
return $cache;
}
}