Hallo liebe Leser,

dies soll nun mein erster Blogeintrag werden und in dem werde ich eine kleine Cache-Klasse vorstellen.
Wer den Weg hierher findet, darf gerne konstruktive Kommentare hinterlassen.

Nun zur Klasse:

Ich habe der Einfachheit halber einen Konstruktor weggelassen und den Eigenschaften statisch Werte zugewiesen. Ich selbst verwende diese Klasse so auch nicht, aber so ähnlich ;).

Ich hoffe die Kommentare genügen. Ich gehe davon aus, dass die Eigenschaften und Methoden selbsterklärend sind :).

Cache.class.php
[PHP]
class Cache {

/**
* @String
* Cache-Ordner
*/
private $cacheDir = 'cache/';
/**
* @Boolean
* Cache ein/aus (true/false)
*/
private $caching = false;
/**
* @Int
* Cache Lebensdauer in Sekunden
*/
private $cacheLifetime = 60;
/**
* @String
* Cache-Filename generiert aus MD5 verschlüsselter ID + Template-Filename + .class
*/
private $cacheFile = null;

/**
* Cache-Filename kreieren
*/
public function setCacheFileName($id, $tplFileName) {
$this->cacheFile = md5($id.$tplFileName).'.cache';
}

/**
* Pfad zu den Cachefiles setzen
*/
public function setCacheDir($path) {
$this->cacheDir = $path;
}

/**
* caching ein-/ausschalten
*/
public function setCaching($what) {
$this->caching = $what;
}

/**
* Cache Lebensdauer setzen
*/
public function setCacheLifetime($ltime) {
$this->cacheLifetime = intval($ltime);
}

/**
* überprüfen ob ein Cachefile existiert. wenn ja, dann überprüfen ob es aktuell ist
*/
public function isCache() {
if(file_exists($this->cacheDir.$this->cacheFile) ) {
if((time() - filemtime($this->cacheDir.$this->cacheFile)) >= $this->cacheLifetime) {
$this->deleteCacheFile();
clearstatcache();
return false;
}
clearstatcache();
return true;
}
return false;
}

/**
* Cachefile löschen
*/
public function deleteCacheFile() {
if(unlink($this->cacheDir.$this->cacheFile)) {
return true;
}
return false;
}

/**
* Cachefile erstellen
*/
public function writeCache($tpldata) {
if($this->caching === true && $this->isCache() === false) {
$serializedData = serialize($tpldata);
if(!file_put_contents($this->cacheDir.$this->cacheFile, $serializedData, LOCK_EX)) {
return false;
}
}
}

/**
* Cachefile lesen
*/
public function readCache() {
$data = file_get_contents($this->cacheDir.$this->cacheFile);
$mdata = unserialize($data);
return $mdata;
}

}
[/PHP]
Cache.class anwenden

example.php
[PHP]
//Klasse inkludieren
require_once 'Cache.class.php';
//neues Objekt Cache
$cache = new Cache;
//Cache Filename setzen
$cache->setCacheFileName(1, 'template.tpl');
//Caching aktivieren
$cache->setCaching(true);
//Cache schreiben
$cache->writeCache($tplData);
//Cache ausgeben
echo $cache->readCache();
[/PHP]

Das war's.

VG
gourmet