44 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			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;
 | 
						|
  }
 | 
						|
}
 |