<?php
# autor: fifi209 (Fast)
# class: CacheSystem
# version: 1.02
class CacheSystem {
const COMPRESSION_NONE=0;
const COMPRESSION_BZIP2=1;
protected $dir;
private $compression;
public function __construct($dir, $compression) {
$this->dir = $dir;
switch ($compression) {
case self::COMPRESSION_NONE:
$this->compression = false;
break;
case self::COMPRESSION_BZIP2:
$this->compression = true;
break;
}
}else{
echo 'Podany katalog nie istnieje lub nie masz praw do jego otworzenia.'; }
}
public function __get($cacheFile) {
if ($this->compression == false) {
}else{
$handle = bzopen($this->dir.'/'.$cacheFile.'.cache', 'r');
$text = bzread
($handle, filesize($this->dir.'/'.$cacheFile.'.cache')); bzclose($handle);
return $text;
}
}else{
return false;
}
}
public function __set($cacheFile, $value) {
if ($this->compression == false) {
file_put_contents($this->dir.'/'.$cacheFile.'.cache', $value);
return true;
}else{
$handle = bzopen($this->dir.'/'.$cacheFile.'.cache', 'w');
bzwrite($handle, $value);
bzclose($handle);
return true;
}
}
public function destroy($cacheFile) {
if ($this->$cacheFile != false) {
unlink($this->dir.'/'.$cacheFile.'.cache'); return true;
}else{
return false;
}
}
}
?>
Napisałem ją dla siebie, ale może się komuś przyda. A teraz prosiłbym o jakieś uwagi dot. kodu, tj. co by można zmienić, zrobić inaczej.
Wydaje mi się, że jak na tą prostotę funkcjonalność jest wystarczająca. (przynajmniej dla mnie)
Użycie przykładowe:
Najpierw konstruktor:
<?php
$cache = new CacheSystem('cache', CacheSystem::COMPRESSION_NONE);
?>
Parametr pierwszy - ścieżka do folderu cache
Parametr drugi - używana kompresja (w tym wypadku brak, lecz "NONE" można zastąpić "BZIP2")
a) Dodawanie cache/Zmienianie jego wartości (konstruktor pomijam)
<?php
$cache->podstrona = 'Jakas wartosc';
?>

Odczyt cache
<?php
?>
c) Usuwanie cache
<?php
$cache->destroy('podstrona');
?>
podstrona -> nazwa pliku cache
Ten post edytował fifi209 14.06.2009, 22:54:36