smarty模板引擎原理解析
//php 控制器文件
<?php //引入模板引擎文件 include("20130304.php"); $smarty = new TinySmarty(); $qq_numbers=array('a1'=>'12333','a2'=>'2222222','a3'=>'333333','a4'=>'3333333'); $smarty->assign($qq_numbers); $smarty->assign('title','这是我的QQ号码'); $smarty->assign('contents','这是我的QQ:1211884772'); $smarty->display('20120305_01.html');?>
模板引擎类20130304.php
<?php /*** smarty模板引擎原理 1:读取模板文件 2:替换模板标签为php可执行代码 3:保存替换成功的php文件 ***/ /* 问题? 1:每次访问都编译浪费cpu? 编译文件存在,不用在编译直接引入 2:模板文件修改后,必须重新编译该文件 当模板文件修改时间大于编译文件修改时间,说明模板文件被修改了, 因此要重新编译模板文件 */ class TinySmarty{//模板文件存放目录public $template_dir="./templates/";//编译后文件存放目录public $compile_dir="./c_templates/";//存放变量值public $tpl_vars=array();//assign//将变量以数组形式存放到该$tpl_var属性public function assign($tpl_var,$var=null){//传入数组形式,为批量赋值if(is_array($tpl_var)){foreach($tpl_var as $_key=>$_val){if($_key!=''){$this->tpl_vars[$_key] = $_val;}}}else{//传入非空字符if($tpl_var!=''){$this->tpl_vars[$tpl_var] = $var;}}}/*name displayparam string $tpl_file 文件名*/public function display($tpl_file){//模板文件路径$template_file_path = $this->template_dir.$tpl_file;//编译文件路径$compile_file_path = $this->compile_dir.$tpl_file;//判断编译文件是否存在if(!file_exists($compile_file_path)||filemtime($template_file_path)>filemtime($compile_file_path)){//判断文件是否存在if(!file_exists($template_file_path)){return false;}//读取文件内容$fpl_file_con = file_get_contents($template_file_path);//替换模板标签//如:{$title} 替换为<?php echo $title; ? >//正则表达式//此处正则涉及到正则的反响引用$pattern = '/{\s*\$([_a-zA-Z][_0-9a-zA-Z]*)\s*\}/i';$replace = '<?php echo $this->tpl_vars["${1}"];?>';$new_file_con= preg_replace($pattern,$replace,$fpl_file_con);//写入文件内容file_put_contents($compile_file_path,$new_file_con);}//引入编译后的文件include ($compile_file_path);} }?>
模板文件20120305_01.html
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>{$title}</title> </head> <body> <h1>hello-</h1> {$contents} </body> </html>
smarty模板引擎原理解析相关推荐
- 高性能JavaScript模板引擎原理解析
来源:http://cdc.tencent.com/?p=5723 随着 web 发展,前端应用变得越来越复杂,基于后端的 javascript(Node.js) 也开始崭露头角,此时 javascr ...
- Smarty模板引擎和MVC设计模式
Smarty模板引擎 一.什么是smarty? smarty是一个使用php写出来的模板php模板引擎,它提供了逻辑与外在内容的分离 目的:使用户界面和业务数据的代码分离 smarty 第三方的类库 ...
- 深入浅出之Smarty模板引擎工作机制(一)
深入浅出Smarty模板引擎工作机制,我们将对比使用smarty模板引擎和没使用smarty模板引擎的两种开发方式的区别,并动手开发一个自己的模板引擎,以便加深对smarty模板引擎工作机制的理解. ...
- 深入浅出之Smarty模板引擎工作机制(二)
源代码下载地址:深入浅出之Smarty模板引擎工作机制 接下来根据以下的Smarty模板引擎原理流程图开发一个自己的模板引擎用于学习,以便加深理解. Smarty模板引擎的原理,其实是这么一个过程: ...
- Smarty模板引擎工作机制(一)
深入浅出Smarty模板引擎工作机制,我们将对比使用smarty模板引擎和没使用smarty模板引擎的两种开发方式的区别,并动手开发一个自己的模板引擎,以便加深对smarty模板引擎工作机制的理解. ...
- Smarty模板引擎工作机制(二)
源代码下载地址:深入浅出之Smarty模板引擎工作机制 接下来根据以下的Smarty模板引擎原理流程图开发一个自己的模板引擎用于学习,以便加深理解. Smarty模板引擎的原理,其实是这么一个过程: ...
- 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)
前些时间在看创智博客韩顺平的Smarty模板引擎教程,再结合自己跟李炎恢第二季开发中CMS系统写的tpl模板引擎.今天就写一个迷你版的Smarty引擎,虽然说我并没有深入分析过Smarty的源码,但是 ...
- smarty模板引擎工作原理
1.模板引擎是什么 展示给用户的页面由数据及承载数据的标签组成,标签就是html,而数据就是由php处理的变量,这样就涉及到了前端和后端的交互,模板引擎就是将php代码与html代码分离的技术. sm ...
- Smarty模板引擎技术二
Smarty模板引擎技术 内建函数 include_php内建函数 作用:载入一个php文件,将载入的文件的内容赋值给一个变量 注意:该内建函数只能在2.0中使用,如果使用的话,必须得实例化Smart ...
最新文章
- 伍六七带你学算法 入门篇-最长回文串
- matlab 2014 破解使用
- MVC6 (ASP.NET5) 自定义TagHelper
- 实战演示 Go 反射的使用方法和应用场景
- 在命令行中的vim编辑器加上行号
- 如何在水晶报表显示上下标
- 很强势!因拒绝退回用户保证金,知名在线旅游平台成“老赖”,回应...
- 酱油瓶上有两个字很重要,一直都被忽略了,以后看准再买!
- oracle12c不使用cdb模式,oracle 12c non-cdb升级成cdb模式
- 什么是TPM设备管理系统?本文来告诉你
- 【论文阅读】Zero-Resource Knowledge-Grounded Dialogue Generation
- js image对象
- 【重磅】2021年SCI影响因子滚烫式公布!各领域TOP期刊!(附下载链接)
- 详解如何获取深度学习模型中间层的输出值
- spring 事务中先删除再插入后唯一键冲突 delete then insert duplicate key
- 基于Vue3的排班日历方案
- 股票API下单接口是怎样传入交易数据的?
- layui框架的一些基本使用
- 微信小程序2022年发展方向曝光
- Android LinearGradient的使用