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(); }