<?php /** * classe pour lire / ecrire un fichier array php * le fichier doit exister et définir tous les attributs * qui sont les attributs de la classe * ceci permet de lire / ecrire une configuration facilement */ class cache { private $contenu; // cache private $save; private $name; private $file; /* constructeur */ function __construct($cache, $save = false) { $this->file = SITE_DIR . "cache/$cache.cache.php"; if($cache == 'global') $this->name = '_cache'; else $this->name = '_'.$cache; if(!is_file($this->file)) // générer le fichier vide file_put_contents($this->file,"<?php\n\${$this->name} = array();\n?>"); // die("erreur cache=$cache: inconnu"); include_once($this->file); $this->contenu = ${$this->name}; /* enregistrer ou pas à la fermeture? */ $this->save = $save; } function __destruct(){ /* enregistre le fichier ? */ if($this->save) $this->save(); } /* méthodes set & get */ function __set($key, $value) { $this->contenu[$key] = $value; } function __get($key) { if(isset($this->contenu[$key])) return $this->contenu[$key]; else { echo "GET classe 'cache({$this->name})'->$key\n"; return false; } } function get_array(){ return $this->contenu; } function force_save($save=true){ $this->save = $save; } function save(){ /* enregistre le fichier */ $fp = fopen($this->file, "w"); $txt = '<?php $'.$this->name.' = '; $txt .= var_export($this->contenu, true); $txt .= '; ?>'; fwrite($fp, $txt); fclose($fp); } } ?>