龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php wecis 2.0 RC 版

时间:2015-03-28 02:25来源:网络整理 作者:网络 点击:
分享到:
wecis 2.0 RC 版 调试bug 请通知本人,谢谢!新版功能:1. 添加{-script lang=#39;php#39;-} 模板也可以写php代码2.修改1.0 细节错误 :如无用功代码,优化核心代码,提高运行编译速度。3.添加模板格

调试bug 请通知本人,谢谢!新版功能:1. 添加{-script lang='php'-} 模板也可以写php代码2.修改1.0 细节错误 : 如无用功代码,优化核心代码,提高运行编译速度。3.添加模板格式化函数{-$string|subistr(12):'...'-} ,时间格式化

[PHP]代码

<?php

/**
 *      [Wecis] (C)2012-2099 Haowei Inc.
 *      This is NOT a freeware, use is subject to license terms
 *      version: 2.0 RC
**/

class wecis{

    private $assign=array();
    public $tpl_cache_dir = 'cache/';
    public $tpl_cache_open = TRUE;
    public $tpl_cache_time = 5 ;
    public $tpl_tpl_dir = 'template/';
    public $tpl_rw_left = '{-';
    public $tpl_rw_right = '-}';

    public function wecis(){
        return '[{name:\'wecis 2.0 rc\'}]';
    }

    public function assign($tplvar,$value){
        if(empty($tplvar) || empty($value)){
            $this->error('wecis-> assign() Parameters are missing');
        }
        return $this->assign[$tplvar]=$value;
    }

    public function display($tplfile){
        if(empty($tplfile)){ $this->error('wecis-> display() Parameters are missing'); }
        if($this->tpl_cache_open){
            if(file_exists($this->tpl_cache_dir.$this->cahce_format($tplfile))){
                if($this->cahce_timeout($tplfile)) {
                    $this->cache_delete($tplfile);
                    include $this->cache($tplfile) ? $this->tpl_cache_dir.$this->cahce_format($tplfile) : '';
                }else{
                    include $this->tpl_cache_dir.$this->cahce_format($tplfile);

                }
            }else{
                include $this->cache($tplfile) ? $this->tpl_cache_dir.$this->cahce_format($tplfile) : '';
            }
        }else{
            include $this->cache($tplfile) ? $this->tpl_cache_dir.$this->cahce_format($tplfile) : '';
        }
    }

    public function cache($tplfile){
        $data = file_get_contents($this->tpl_tpl_dir.$tplfile);
        $data = preg_replace('/'.$this->tpl_rw_left.'script lang=\'php\''.$this->tpl_rw_right.'/','<?php ',$data);
        $data = preg_replace('/'.$this->tpl_rw_left.'\/script'.$this->tpl_rw_right.'/','?>',$data);
        $data = preg_replace('/'.$this->tpl_rw_left.'loop (\$(.*)?) as (\$(.*)?)'.$this->tpl_rw_right.'/','<?php foreach( \\1 as \\3){ ?>',$data);
        $data = preg_replace('/'.$this->tpl_rw_left.'\/loop'.$this->tpl_rw_right.'/','<?php } ?>',$data);
        $data = preg_replace('/'.$this->tpl_rw_left.'(\$(.*)?)\[((.*)?)\]'.$this->tpl_rw_right.'/','<?php echo \\1[\'\\3\']; ?>',$data);
        $data = preg_replace('/'.$this->tpl_rw_left.'if((.*)?)'.$this->tpl_rw_right.'/','<?php if(\\1){ ?>',$data);
        $data = preg_replace('/'.$this->tpl_rw_left.'else'.$this->tpl_rw_right.'/','<?php }else{ ?>',$data);
        $data = preg_replace('/'.$this->tpl_rw_left.'\/if'.$this->tpl_rw_right.'/','<?php } ?>',$data);
        $data = preg_replace('/'.$this->tpl_rw_left.'(\$(.*)?)\|subistr\(((.*)?)\)\:((.*)?)'.$this->tpl_rw_right.'/','<?php echo subistr(\\1,\\3,\\5); ?>',$data);
        $data = preg_replace('/'.$this->tpl_rw_left.'(\$(.*)?)\|time\:\(((.*)?)\)'.$this->tpl_rw_right.'/',"<?php echo formatime(\\1,\\3); ?>",$data);
        $data = preg_replace('/'.$this->tpl_rw_left.'(\$(.*)?)'.$this->tpl_rw_right.'/','<?php echo \\1; ?>',$data);
        $arr='';
        foreach($this->assign as $k=>$v) {
            if(!is_array($v)) {
                $data = !is_numeric($v) ? str_replace('$'.$k,'\''.$v.'\'',$data) : str_replace('$'.$k,$v,$data);
            }else{
                $arr.='<?php $'.$k.'='.var_export($v,true).'; ?>';
            }
        }
        return file_put_contents($this->tpl_cache_dir.$this->cahce_format($tplfile),$arr.$data) ? 1 : 0;
    }

    public function cahce_timeout($tplfile){
        $time = time();
        $filetime = fileatime($this->tpl_cache_dir.$this->cahce_format($tplfile));
        return $time-$filetime > ($this->tpl_cache_time*60) ? 1 : 0;
    }

    public function cahce_format($tplfile){
        return md5($this->version()).str_replace('/','.',$tplfile).'.php';
    }

    public function cache_delete($tplfile){
        return unlink($this->tpl_cache_dir.$this->cahce_format($tplfile)) ? 1 : 0;
    }

    private function error($str){
        return exit($str);
    }

    public function version(){
        return 'wecis 2.0 RC';
    }

}

精彩图集

赞助商链接