打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PHP模板引擎原理

PHP模板引擎原理  

2011-11-28 16:31:05|  分类: PHP资料 |举报 |字号 订阅

模板引擎实现的原理

访问php文件, php文件会去加载模板引擎,通过模板引擎去加载模板然后替换模板里面的变量 然后生成一个编译文件 

最后将该编译文件导入 访问的php文件中输出     第二次访问的时候 如果 缓存文件存在或者没有被改动则直接 导入缓存文件 输出

否则重新编译

自定义的一个模板引擎 mytpl.class.php

<?php

class mytpl{

//指定模板目录

private $template_dir;

//编译后的目录

private $compile_dir;

//读取模板中所有变量的数组

private $arr_var=array();

//构造方法

public function __construct($template_dir="./templates",$compile_dir="./templates_c")

{

$this->template_dir=rtrim($template_dir,"/")."/";

$this->compile_dir=rtrim($compile_dir,"/")."/";

}

//模板中变量分配调用的方法

public function assign($tpl_var,$value=null){

$this->arr_var[$tpl_var]=$value;

}

//调用模板显示

public function display($fileName){

$tplFile=$this->template_dir.$fileName;

if(!file_exists($tplFile)){

return false;

}

//定义编译合成的文件  加了前缀 和路径 和后缀名.php

$comFileName=$this->compile_dir."com_".$fileName.".php";

if(!file_exists($comFileName) || filemtime($comFileName)< filemtime($tplFile)){//如果缓存文件不存在则 编译  或者文件修改了也编译

     $repContent=$this->tmp_replace(file_get_contents($tplFile));//得到模板文件 并替换占位符 并得到替换后的文件

    file_put_contents($comFileName,$repContent);//将替换后的文件写入定义的缓存文件中

}

 

//包含编译后的文件

include $comFileName;

}

//替换模板中的占位符

private function tmp_replace($content){

$pattern=array(

'/\<\!--\s*\$([a-zA-Z]*)\s*--\>/i'

);

$replacement=array(

'<?php echo $this->arr_var["${1}"]; ?>'

);

$repContent=preg_replace($pattern,$replacement,$content);

return $repContent;

}

}

//使用该模板引擎

<?php

//导入模板引擎类

include"mytpl.class.php";

$title="this is title";

$content="this is content";

$tpl=new mytpl();

//分配变量

$tpl->assign("title",$title);

$tpl->assign("content",$content);

//指定处理的模板

$tpl->display("tpl.html");

?>

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
深入浅出之Smarty模板引擎工作机制(二)
php smarty模板实例
SMARTY环境下合理的网站结构
编程语言php制作简单模版引擎,php模版引擎_PHP教程
全新做一个自己的模板步骤是?应参考那些文档? - 模板美工 - 用户论坛
PHPCMS2007整站代码分析讲解(六)之模板引擎
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服