51 lines
1.2 KiB
PHP
51 lines
1.2 KiB
PHP
<?php
|
|
namespace nulib\cache;
|
|
|
|
use nulib\php\func;
|
|
|
|
/**
|
|
* Class CacheData: gestion d'une donnée mise en cache
|
|
*/
|
|
abstract class CacheData {
|
|
function __construct(?string $name, $compute) {
|
|
$this->name = $name ?? "";
|
|
$this->compute = func::withn($compute ?? static::COMPUTE);
|
|
}
|
|
|
|
protected string $name;
|
|
|
|
function getName() : string {
|
|
return $this->name;
|
|
}
|
|
|
|
protected ?func $compute;
|
|
|
|
/** calculer la donnée */
|
|
function compute() {
|
|
$compute = $this->compute;
|
|
$data = $compute !== null? $compute->invoke(): null;
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* le cache est-il externe? si non, utiliser {@link setDatafile()} pour
|
|
* spécifier le fichier destination de la valeur
|
|
*/
|
|
abstract function isExternal(): bool;
|
|
|
|
/** spécifier le chemin du cache à partir du fichier de base */
|
|
abstract function setDatafile(?string $basefile): void;
|
|
|
|
/** indiquer si le cache existe */
|
|
abstract function exists(): bool;
|
|
|
|
/** charger la donnée depuis le cache */
|
|
abstract function load();
|
|
|
|
/** sauvegarder la donnée dans le cache et la retourner */
|
|
abstract function save($data);
|
|
|
|
/** supprimer le cache */
|
|
abstract function delete();
|
|
}
|