自制php模板引擎第二版
这是继上次的《超简单实用的php 模板引擎》改进后第二个版本,加入了子模版的语法;允许模板嵌套调用;如我所愿,所有代码在100行内完成,虽然代码相当简陋,功能和那些强大的模板引擎没法比。不过,小巧精致,同时也相当实用,为小系统的快速开发提供帮助。
子模版语法:
#include ‘header’
代码修改的部分,我帖了出来,其余的请到之前写的文章中查阅^_^
private function parse($str){ $retarr = $this->token($str); foreach($retarr as $key=>$v){ $tokenname = @token_name($v[1][0]); switch($tokenname){ case 'T_VARIABLE': $str = str_replace("#$key","<?php echo {$v[1][1]} ?>",$str); break; case 'T_INCLUDE': for($i=1;$i<count($v);$i++){ if( @token_name($v[$i][0]) == 'T_CONSTANT_ENCAPSED_STRING'){ $search = array("'","\""); $subtemp = $this->template_path."/".str_replace($search,"",$v[$i][1]); if(file_exists($subtemp)){ $substr = file_get_contents($subtemp); $replacestr = $this->parse($substr); } else if(file_exists($subtemp=$subtemp.$this->template_surfix)) { $substr = file_get_contents($subtemp); $replacestr = $this->parse($substr); } else{ $replacestr = ""; } $str = preg_replace("/#include.*{$v[$i][1]}/i",$replacestr,$str); } } break; default: $str = str_replace("#".$key,"<?php $key ?>",$str); } } return ($str); }
坚持每天来看帖子已经成了我的一种习惯,感谢您的精彩分享。
代码运行起来有点小问题!
请指正哦?