今日写完的缓存类

 尚未完善,大家共同研究

PHP代码
  1. <?php         
  2. /*        
  3.   缓存类 of www.vgot.cn by pader        
  4.   09-1-30 13:34        
  5. */          
  6.       
  7. define('CACHE_DIR',dirname(__FILE__).'/cache');      
  8.   
  9. class cache {   
  10.     var $cache = array();   
  11.        
  12.     //获取缓存   
  13.     function getCache($cacheName) {   
  14.         include $this->cacheFile($cacheName);   
  15.         $this->cache[$cacheName] = $cache[$cacheName];   
  16.         return $this->cache[$cacheName];   
  17.     }   
  18.   
  19.     //存储缓存   
  20.     function saveCache($cacheName,$cacheVar){   
  21.         $cacheCode = "<?php\r\n//Cache create at ".date('Y-m-d H:i:s')."\r\n";   
  22.         $cacheCode .= '$cache[\''.$cacheName.'\'] = ';   
  23.         $cacheCode .= $this->createVarCode($cacheVar);   
  24.         $cacheCode .= ";\r\n";   
  25.         return $this->writeFile($this->cacheFile($cacheName),$cacheCode) ? true : false;   
  26.     }   
  27.   
  28.     //创建缓存变量原生态代码   
  29.     function createVarCode($myVar,$level=0) {   
  30.         $tabEnd = '';   
  31.         for($i=0;$i<$level;$i++) {   
  32.             $tabEnd .= "\t";   
  33.         }   
  34.         $tab = $tabEnd."\t";   
  35.         if(is_array($myVar)) {   
  36.             $varCode = "array(\r\n";   
  37.             foreach($myVar as $key => $val) {   
  38.                 $key = is_numeric($key) ? $key : '\''.$key.'\'';   
  39.                 if(is_array($val)) {   
  40.                     $varCode .= $tab.$key.' => '.$this->createVarCode($val,$level + 1);   
  41.                 } else {   
  42.                     $varCode .= $tab.$key.' => \''.$this->addslashes($val).'\'';   
  43.                 }   
  44.                 $varCode .= ",\r\n";   
  45.             }   
  46.             $varCode = substr_replace($varCode,'',-3,1)."$tabEnd)";   
  47.         } else {   
  48.             $varCode = '\''.$this->addslashes($myVar).'\'';   
  49.         }   
  50.         return $varCode;   
  51.     }   
  52.        
  53.     function addslashes($text) {   
  54.         $text = addcslashes($text,'\\');  
  55.         $text = addcslashes($text,'\'');   
  56.         return $text;   
  57.     }   
  58.   
  59.     //返回缓存文件地址   
  60.     function cacheFile($cacheName) {   
  61.         $cacheFile = CACHE_DIR.'/'.$cacheName.'.php';   
  62.         return $cacheFile;   
  63.     }   
  64.   
  65.     function deleteCache($cacheName) {   
  66.         return @unlink($this->cacheFile($cacheName)) ? true : false;   
  67.     }   
  68.   
  69.     function printCache() {   
  70.         print_r($this->cache);   
  71.     }   
  72.   
  73.     //写文件   
  74.     function writeFile($fileName,$content,$wmode='w'){   
  75.         $s = false;   
  76.         if($fp = @fopen($fileName,$wmode)) {   
  77.             if(flock($fp,LOCK_EX)) {   
  78.                 $s = @fwrite($fp,$content) ? true : false;    
  79.                 flock($fp,LOCK_UN);   
  80.                 fclose($fp);   
  81.             }   
  82.         }   
  83.         return $s;   
  84.     }   
  85. }