<?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; } }