码迷,mamicode.com
首页 > 移动开发 > 详细

php仿照asp实现application缓存的代码分享

时间:2018-05-21 00:02:05      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:this   check   close   discuz   add   strlen   style   fopen   目录   

php 怎么没有asp 那样的application缓存呢?最近我找了很多,都只有自己写,下面我分享一段代码

class php_cache{
    //相对或者绝对目录,末尾不要加 ‘/‘
    var $cache_dir = ‘./cache‘;
    var $cache_extension = ‘.cache.php‘;
 
    function set_cache($name, $value){
        $pre = "< ?\n//Cache Created at: ".date(‘Y-m-d H:i:s‘)."\n";
        if(!is_array($value)){
            $value = $value;
            $str = "\$$name = ‘$value‘;";
        }else{
            $str = "\$$name = " . $this->arrayeval($value) . ‘;‘;
        }
        $end = "\n?>";
        echo $cache = $pre . $str . $end;
        $cache_file = $this->cache_dir . ‘/‘ . $name . $this->cache_extension;
 
        if($fp = @fopen($cache_file, ‘wb‘)) {
            fwrite($fp, $cache);
            fclose($fp);
            return true;
        } else {
            echo $cache_file;
            exit(‘Can not write to cache files, please check cache directory ‘);
            return false;
        }
    }
 
    //将array变成字符串, 来自discuz!
    function arrayeval($array, $level = 0) {
 
        if(!is_array($array)) {
            return "‘".$array."‘";
        }
 
        $space = ‘‘;
        for($i = 0; $i < = $level; $i++) {
            $space .= "\t";
        }
        $evaluate = "Array\n$space(\n";
        $comma = $space;
        if(is_array($array)) {
            foreach($array as $key => $val) {
                $key = is_string($key) ? ‘\‘‘.addcslashes($key, ‘\‘\\‘).‘\‘‘ : $key;
                $val = !is_array($val) && (!preg_match("/^\-?[1-9]\d*$/", $val) || strlen($val) > 12) ? ‘\‘‘.addcslashes($val, ‘\‘\\‘).‘\‘‘ : $val;
                if(is_array($val)) {
                    $evaluate .= "$comma$key => ".arrayeval($val, $level + 1);
                } else {
                    $evaluate .= "$comma$key => $val";
                }
                $comma = ",\n$space";
            }
        }
        $evaluate .= "\n$space)";
        return $evaluate;
    }
}

调用代码如下:

include ‘./phpcache_class.php‘;
$pc = new php_cache;
$a = array(‘a‘, ‘b‘, ‘c‘);
$pc->set_cache(‘a‘, addslashes($a));

 

php仿照asp实现application缓存的代码分享

标签:this   check   close   discuz   add   strlen   style   fopen   目录   

原文地址:https://www.cnblogs.com/aksir/p/9065140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!