博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
smarty课程---最最最简单的smarty例子
阅读量:6451 次
发布时间:2019-06-23

本文共 1891 字,大约阅读时间需要 6 分钟。

smarty课程---最最最简单的smarty例子

一、总结

一句话总结:其实所有的模板引擎的工作原理是差不多的,无非就是在php程序里面用正则匹配将模板里面的标签替换为php代码从而将两者混合为一个php的混编文件,然后执行这个混编文件。

smarty的两个主要函数:

assign->分配变量

display->加载模板

 

1、smarty的功能是什么?

用一个php文件给一个html文件分配变量

其实也是模板和控制器分离(也就是mvc模式)

 

2、smarty的两个函数的主要作用是什么?

assign->分配变量

display->加载模板
替换模板中的变量,例如把{$name}替换为<? echo $this->arr['name'];?>
然后用include加载执行这个模板

 

3、我们在外部访问的是哪个文件?

访问的是index.php,而不是index.html,也就是相对于thinkphp里面的控制器,我们根本就没有访问模板,模板只是作为模板文件使用,编译好后被扔到了控制器里面

也就是说,在thinkphp里面我们只访问了控制器,而模板里面的内容是扔到了控制器里面,我们根本没有访问模板,我们一直都只是在控制器

 

4、display函数里面为什么不能用echo而用include?

直接echo的话php代码不执行,因为echo本身就在php里面,所以不能接着套php标签,而编译好的模板里面是php代码

include作用:不仅仅是引入,还执行

 

9     function display($file){10         $str=file_get_contents($file); 11 $ptn='/\{\$(.+)\}/i'; 12 $rep='
arr["$1"];?>'; 13 $rst=preg_replace($ptn, $rep, $str); 14 $dstfile="templates_c/".md5($file).".php"; 15 file_put_contents($dstfile, $rst); 16 include($dstfile); 17 //echo "$str"; 18 //直接echo的话php代码不执行,因为echo本身就在php里面,所以不能接着套php标签 19 }

 

 

 

二、最最最简单的smarty例子

1、截图

目录结构

 

 

运行成功后的样例

 

 

 

2、代码

 

index.php
1 
assign("name","user1");6 $s->assign("age","30");7 8 $s->display("templates/index.html");9 ?>

 

模板 index.html
1  2  3  4     
5 Document 6 7 8

{$name}

9

{$age}

10 11

 

Smarty.class.php
1 
arr[$key]=$val; 7 } 8 9 function display($file){10 $str=file_get_contents($file);11 $ptn='/\{\$(.+)\}/i';12 $rep='
arr["$1"];?>';13 $rst=preg_replace($ptn, $rep, $str);14 $dstfile="templates_c/".md5($file).".php";15 file_put_contents($dstfile, $rst);16 include($dstfile);17 //echo "$str";18 //直接echo的话php代码不执行,因为echo本身就在php里面,所以不能接着套php标签19 }20 }21 ?>

 

Smarty编译后的:fb5aa1cd1261d08d02db6f7dc314d9ab.php
1  2  3  4     
5 Document 6 7 8

arr["name"];?>

9

arr["age"];?>

10 11

 

 

 

 

转载于:https://www.cnblogs.com/Renyi-Fan/p/9585596.html

你可能感兴趣的文章
kafka消费组、消费者
查看>>
matlab查找回车字符
查看>>
Linux 64位操作系统 数据类型大小
查看>>
TYVJP1933 绿豆蛙的归宿
查看>>
图表,列表在同一DIV里切换显示()
查看>>
数据库(十一)
查看>>
Http协议
查看>>
USACO 3.3 游戏
查看>>
datable
查看>>
java中打开说明文档
查看>>
ASP.NET文章目录导航
查看>>
连续生成随机数的方法
查看>>
ionic隐藏tabs方法
查看>>
部署keepalive+lvs
查看>>
c语言实现数组转置,加减,乘法运算
查看>>
__autoload函数
查看>>
随笔学习初谈
查看>>
DEDE织梦常用的调用方法
查看>>
WCF与Web API 区别(应用场景)
查看>>
Python - - 面向对象 - - 初始面向对象
查看>>