Smarty模板类内部原理实例分析
框架(架构)  /  管理员 发布于 7年前   128
本文实例讲述了Smarty模板类内部原理。分享给大家供大家参考,具体如下: 之前在学习ThinkPHP的时候,有接触到Smarty模板类,但是一直不知道其内部实现的原理,博主今天终于知道了其内部原理,其实也挺简单的,然后写了一个迷你版的Smarty模板类,对理解其内部原理有了很大的帮助。 1、迷你版Smarty类 首先上代码,最后再进行讲解。 项目结构图 MiniSmarty类代码(MiniSmarty.class.php) 测试模板类代码(testSmarty.php) 模板文件(template.html) 编译后的文件(template.html.php) 代码都贴完了,最后解释一下。在测试模板类(testSmarty.php)文件中,首先是引入模板类文件,实例化模板对象,然后给模板对象赋值,最后显示模板。在模板类(MiniSmarty.class.php)文件中,有3个属性和3个方法,属性分别是template_dir 、compile_dir‘和tpl_var,含义分别是模板文件的路径、编译后文件的路径、模板对象的变量。3个方法分别是 2、Smarty原理分析 工作流程 (1)把需要显示的全局变量,赋值,塞到对象的内部属性中的一个数组里 使用步骤 (1)Smarty是一个类,要使用的话,必须引入在进行实例化 Smarty的缺点 (1)编译模板,浪费时间 更多关于Smarty相关内容感兴趣的读者可查看本站专题:《smarty模板入门基础教程》、《PHP模板技术总结》、《PHP基于pdo操作数据库技巧总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家基于smarty模板的PHP程序设计有所帮助。tpl_var[$key] = $value; } /** * 编译模板,并引入编译后的文件 * @param str $template 模板文件 * @return void */ public function display($template){ $compile_file = $this->compile($template); include($compile_file); } /** * 将模板文件编译成php文件 * @param str $template 模板文件名 * @return str 编译文件名 */ private function compile($template){ $template_file = $this->template_dir.'/'.$template; //读取模板文件中的内容 $source = file_get_contents($template_file); //判断是否需要再次生产编译文件 $compile_file = $this->compile_dir.'/'.$template.'.php'; //如果存在编译文件且编译文件的修改时间比模板文件大,则不用再次编译,直接返回文件路径 if(file_exists($compile_file) && filemtime($compile_file) > filemtime($template_file)){ return $compile_file; } //解析{$}为tpl_var[\'', $source); $source = str_replace('}', '\'];?>', $source); //生成编译文件 file_put_contents($compile_file, $source); //返回编译后的文件路径 return $compile_file; }}?>
template_dir = './template';$Smarty->compile_dir = './compile';//2、给模板对象赋值$title = '两会召开';$content = '好奶粉,好会议,好新闻';$Smarty->assign('title',$title);$Smarty->assign('content',$content);//3、显示模板$template = 'template.html';$Smarty->display($template);?>
{$content}
tpl_var['content'];?>
assign
、display
和compile
,assign方法是给模板对象赋值,display方法是编译模板文件,并引入(显示)编译后的文件,compile方法是编译模板文件。编译模板文件的过程主要是将模板文件中的{$标签}
解析成 等php代码。
(2)然后编译模板,将{$标签}解析成相应的php echo 代码
(3)引入编译后的php文件
(2)使用assign给模板赋值
(3)使用display方法【从编译到输出】
(2)要把变量再重新赋值到对象的属性中,增大了开销您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号