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

wecis 模板引擎 ,很方便

时间:2014-07-22 14:51来源: 作者: 点击:
分享到:
webtmp 正改名为 wecis
webtmp 正改名为 wecis
<?php

/**
 *      [wecis] (C)2010-2099 Haowei Inc.
 *      This is NOT a freeware, use is subject to license terms
 *
**/

class wecis{
	
	private $assign=array();
	public $tpl_cache_dir = 'cache/';
	public $tpl_cache_open = FALSE;
	public $tpl_cache_time = 5 ;
	public $tpl_tpl_dir = 'template/';
	public $tpl_rw_left = '{-';
	public $tpl_rw_right = '-}';
	
	public function wecis() {
		
	}
	
	public function assign($tplvar,$value) {
		if(empty($tplvar) && empty($value)) {
			exit('wecis-> assign() Parameters are missing');
		}elseif(empty($tplvar)){
			exit('wecis-> assign() Parameters are missing');
		}
		return $this->assign[$tplvar]=$value;
	}
	
	public function display($tplfile) {
		if(empty($tplfile)) {
			exit('wecis-> display() Parameters are missing');
		}
		if($this->tpl_cache_open) {
			if(file_exists($this->tpl_cache_dir.md5($this->version()).$this->formatname($tplfile).'.php')) {
				$filetime = fileatime($this->tpl_cache_dir.md5($this->version()).$this->formatname($tplfile).'.php');
				if(time()-$filetime > ($this->tpl_cache_time*60)) {
					unlink($this->tpl_cache_dir.md5($this->version()).$this->formatname($tplfile).'.php');
					include $this->createCachefile($tplfile) ? $this->tpl_cache_dir.md5($this->version()).$this->formatname($tplfile).'.php' : FALSE;
				}else{
					include $this->tpl_cache_dir.md5($this->version()).$this->formatname($tplfile).'.php';
				}
			}else{
				include $this->createCachefile($tplfile) ? $this->tpl_cache_dir.md5($this->version()).$this->formatname($tplfile).'.php' : FALSE;
			}
		}else{
			include $this->createCachefile($tplfile) ? $this->tpl_cache_dir.md5($this->version()).$this->formatname($tplfile).'.php' : FALSE;
		}
	}
	
	private function createCachefile($tplfile) {
		$arrayWrite = '';
		$data = file_get_contents($this->tpl_tpl_dir.$tplfile);
		$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.'loop as (\$(.*)+)'.$this->tpl_rw_right.'/',"<?php foreach(\\1 as \\1){ ?>",$data);
		$data = preg_replace('/'.$this->tpl_rw_left.'(\$(.*)?)\[((.*)?)\]'.$this->tpl_rw_right.'/',"<?php echo \\1['\\3']; ?>",$data);
		$data = preg_replace('/'.$this->tpl_rw_left.'\/loop'.$this->tpl_rw_right.'/','<?php } ?>',$data);
		$data = preg_replace('/'.$this->tpl_rw_left.'/','<?php echo ',preg_replace('/-}/',' ?>',$data));
		foreach($this->assign as $k=>$v) {
			if(is_array($v)) {
				$arrayWrite .= '<?php $'.$k.'='.var_export($v,true).'; ?>';
			}else{
				if(!is_numeric($v)) {
					$data = preg_replace('/\$'.$k.'/','\''.$v.'\';',$data);
				}else{
					$data = preg_replace('/\$'.$k.'/',$v,$data);
				}
			}
		}
		$data = $arrayWrite.$data;
		return file_put_contents($this->tpl_cache_dir.md5($this->version()).$this->formatname($tplfile).'.php',$data) ? 1 : 0;
	}
	
	private function formatname($tplfile) {
		return str_replace('/','.',$tplfile);
	}
	
	private function version(){
		return 'wecis 1.0';
	}
}
?>
精彩图集

赞助商链接